在单个查询中根据条件(“where”)对数据进行分区?

时间:2013-06-24 08:05:58

标签: c# linq

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

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

是否有更简洁的方法在单个查询中执行此操作并返回两个结果,以便我不必重复自己(并最终迭代数据两次),如上所述?

1 个答案:

答案 0 :(得分:4)

如果您不想迭代数据两次,则必须创建一个包含真值和错误值的LINQ查询,并指示它们属于哪个组。

您可以使用ToLookup

执行此操作
var combined = items.ToLookup(x => MyCondition(x, blah));
var trues = combined[true];
var falses = combined[false];