Is it possible to write a LINQ statement with a conditional group clause? Here is basically what I\'m trying to do:
bool someFlag = false;
var result = fro
Co-worker figured it out for me:
bool someFlag = false;
var result = from t in tableName
group t by new { FieldA = (someFlag ? 0 : t.FieldA), t.FieldB } into g
select g;
In the case that your someFlag is not a variable dependent on the current element of the iterator, then I think you could make your code more readable by writing the following.
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);
Admittedly it's slightly longer, but its purpose is significantly more obvious in my opinion.
And to slightly simplify the code you just posted:
bool someFlag = false;
var result = from t in tableName
group t by (someFlag ? t.FieldA : t.FieldB) into g
select g;
...or am I missing something here?