Можно ли написать оператор 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, но если он false, я хочу сгруппировать по FieldA и FieldB.
Ответ 1
Сотрудник вычислил это для меня:
bool someFlag = false;
var result = from t in tableName
group t by new { FieldA = (someFlag ? 0 : t.FieldA), t.FieldB } into g
select g;
Ответ 2
В случае, если ваш 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;
... или я что-то пропустил здесь?