我使用的是.NET 3.5,希望能够从列表中获得每*n
*个项目。我不关心它是使用lambda表达式还是LINQ实现的。
编辑
看起来这个问题引发了相当多的争论(这是一件好事,对吧?)我学到的主要事情是,当你认为你知道做某事的所有方法时(即使如此简单),再想一想!
发布于 2009-03-25 17:33:24
return list.Where((x, i) => i % nStep == 0);
发布于 2009-03-25 17:30:26
我知道这很“老派”,但为什么不直接使用带有loop = n的for循环呢?
发布于 2009-03-25 17:33:30
听起来像是
IEnumerator<T> GetNth<T>(List<T> list, int n) {
for (int i=0; i<list.Count; i+=n)
yield return list[i]
}
就能达到目的。我认为没有必要使用Linq或lambda表达式。
编辑:
搞定
public static class MyListExtensions {
public static IEnumerable<T> GetNth<T>(this List<T> list, int n) {
for (int i=0; i<list.Count; i+=n)
yield return list[i];
}
}
你用一种LINQish的方式写
from var element in MyList.GetNth(10) select element;
第二次编辑
为了让它更具LINQish
from var i in Range(0, ((myList.Length-1)/n)+1) select list[n*i];
https://stackoverflow.com/questions/682615
复制相似问题