是否可以使用有条件的分组子句编写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分组。
是否可以使用有条件的分组子句编写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分组。
我的同事为我解决了这个问题:
bool someFlag = false;
var result = from t in tableName
group t by new { FieldA = (someFlag ? 0 : t.FieldA), t.FieldB } into g
select g;
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;
...或者我在这里漏掉了什么?