2016-07-26 137 views
0

我想要做這樣的事情:C#:如何定義隱式類型變量中IF塊和使用外

var myQuery; 
if (someParam > 0) 
{ 
    myQuery = from x in myTable where x.myValue > someParam select x; 
} 
else { 
    myQuery = from x in myTable select x; 
} 

問題是我不能這樣做,因爲你顯然不能沒有定義一個隱性變量首先聲明它,也不能在聲明它之後重新聲明一個隱式變量。

假設我不知道數據的返回類型(隱式類型變量的整個點),那麼執行此操作的適當方法是什麼?


編輯:

下面的第一個答案運作良好,如果你的類型有明確的規定,但對於這樣的事情?

var myQuery; 
if (includeSomething == true) 
{ 
    myQuery = from x in myTable select new { f1 = x.field1, f2 = x.field2 }; 
} 
else { 
    myQuery = from x in myTable select new { f1 = x.field1, f2 = x.field2, x3 = x.field3 }; 
} 
+0

難道你試着檢查編輯的答案。 – Rahul

+0

@Rahul,編輯的答案是什麼時候? –

+0

@LajosArpad,在答案窗口時間內。 – Rahul

回答

0

是的,在這種情況下,聲明它強類型像

var myQuery; 

IEnumerable<your_type> myQuery; 

您可以也做到這一點使用三元操作符像

var myQuery = (someParam > 0) ? from x in myTable where x.myValue > someParam select x : from x in myTable select x;