【发布时间】:2010-12-28 20:39:47
【问题描述】:
我可以使用 LINQ 将一个 IEnumerable<T> 拆分为两个 IEnumerable<T> 并且只使用一个查询/LINQ 语句吗?
我想避免两次遍历IEnumerable<T>。例如,是否可以将下面的最后两个语句组合起来,让 allValues 只遍历一次?
IEnumerable<MyObj> allValues = ...
List<MyObj> trues = allValues.Where( val => val.SomeProp ).ToList();
List<MyObj> falses = allValues.Where( val => !val.SomeProp ).ToList();
【问题讨论】:
-
该死的,这应该在 MoreLinq 中!
-
在 C++ 和 Haskell 中,这个函数称为
partition,例如(yooks, zooks) = partition (\c -> butterSide c == Up) creatures