我有一些数据需要根据某些条件进行分区,即:
var trues = from item in items where MyCondition(item, blah) select item;
var falses = from item in items where !MyCondition(item, blah) select item;
是否有更简洁的方法在单个查询中执行此操作并返回两个结果,以便我不必重复自己(并最终迭代数据两次),如上所述?
答案 0 :(得分:4)
如果您不想迭代数据两次,则必须创建一个包含真值和错误值的LINQ查询,并指示它们属于哪个组。
您可以使用ToLookup
:
var combined = items.ToLookup(x => MyCondition(x, blah));
var trues = combined[true];
var falses = combined[false];