是否可以使用条件组子句编写 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;
...或者我在这里错过了什么?