В случае, если ваш 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;
... или я что-то здесь упускаю?