16

是否可以使用条件组子句编写 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 分组。

4

2 回答 2

30

同事帮我解决了:

bool someFlag = false;
var result = from t in tableName
   group t by new { FieldA = (someFlag ? 0 : t.FieldA), t.FieldB } into g
   select g;
于 2009-04-16T16:24:52.177 回答
1

如果您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;

...或者我在这里错过了什么?

于 2009-04-16T16:33:33.577 回答