2009-04-16 65 views
10

是否可以使用條件組子句編寫LINQ語句?這基本上就是我想要做的事:LINQ條件組

bool someFlag = false; 

var result = from t in tableName 
    group t by new { (someFlag ? 0 : t.FieldA), t.FieldB } into g 
    select g; 

所以基本上如果someFlag設置爲true,我只能通過FieldB想組,但如果它是假的我想通過FIELDA和FieldB組。

+0

是相同類型的FieldA和FieldB?如果是這樣,那可以大大簡化事情。 – Noldorin 2009-04-16 16:05:57

+0

另外,我認爲someFlag是依賴於當前元素? – Noldorin 2009-04-16 16:09:24

回答

20

同事想通了我:

bool someFlag = false; 
var result = from t in tableName 
    group t by new { FieldA = (someFlag ? 0 : t.FieldA), t.FieldB } into g 
    select g; 
0

在您someFlag不是一個變量相關的迭代器的當前元素上的話,那麼我想你可以讓你的代碼的可讀性更強寫下以下內容。

bool someFlag = false; 
var result = someFlag ? 
    (from t in tableName group t by t.FieldA into g select g) : 
    (from t in tableName group t by t.FieldB into g select g); 

無可否認它稍長,但其目的在我看來更明顯。

而且稍微簡化您剛剛發佈的代碼:

bool someFlag = false; 
var result = from t in tableName 
    group t by (someFlag ? t.FieldA : t.FieldB) into g 
    select g; 

...還是我失去了一些東西?