Jon*_*eet 17
好吧,你可以这样做:
var pairs = sequence.Select((value, index) => new { value, index } )
.GroupBy(x => x.index / 2, x => x.value)
Run Code Online (Sandbox Code Playgroud)
结果是IGrouping<int, T>
使用0,1,2等键,并且每个组的内容是一个或两个项目.
但是,我可能会编写一个自定义扩展方法:
public static IEnumerable<Tuple<T, T>> PairUp<T>(this IEnumerable<T> source)
{
using (var iterator = source.GetEnumerator())
{
while (iterator.MoveNext())
{
var first = iterator.Current;
var second = iterator.MoveNext() ? iterator.Current : default(T);
yield return Tuple.Create(first, second);
}
}
}
Run Code Online (Sandbox Code Playgroud)
这将产生一系列元组 - 这里的缺点是,T
如果序列具有奇数个项,则最终元组将具有作为"第二"项的默认值.对于序列仅由非空值组成的引用类型,这没关系,但对于某些序列,它无济于事.
归档时间: |
|
查看次数: |
2232 次 |
最近记录: |