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 = from t in tableName
group t by new { (someFlag ? 0 : t.FieldA), t.FieldB } into g
select g;
So basically if someFlag is set to true, I want to group only by FieldB, but if it's false I want to group by FieldA and FieldB.
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?
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With