4

我有一些数据需要根据某些条件进行分区,即:

var trues  = from item in items where  MyCondition(item, blah) select item;
var falses = from item in items where !MyCondition(item, blah) select item;

有没有一种更简洁的方法可以在单个查询中执行此操作并返回两个结果,这样我就不必像上面那样重复自己(并最终迭代数据两次)?

4

1 回答 1

4

如果您不想对数据进行两次迭代,则必须创建一个 LINQ 查询,其中包含真值和假值以及它们所属的组的指示符。

您可以使用以下方法执行此操作ToLookup

var combined = items.ToLookup(x => MyCondition(x, blah));
var trues = combined[true];
var falses = combined[false];
于 2013-06-24T08:18:24.480 回答