我正在使用.NET 3.5,并希望能够n
从列表中获取每个**项.我对使用lambda表达式还是LINQ实现它并不感到困扰.
编辑
看起来这个问题激起了很多争论(这是一件好事,对吧?).我学到的主要是,当你认为你知道每一种做某事的方式时(尽管这很简单),再想一想!
return list.Where((x, i) => i % nStep == 0);
我知道这是"老派",但为什么不使用带有步进= n的for循环?
听起来好像
IEnumeratorGetNth (List list, int n) { for (int i=0; i 会做的伎俩.我没有看到使用Linq或lambda表达式的必要性.
编辑:
做了
public static class MyListExtensions { public static IEnumerableGetNth (this List list, int n) { for (int i=0; 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];
我喜欢这种使用this [] getter而不是Where()方法的方法,它基本上迭代了IEnumerable的每个元素.如果你有一个IList/ICollection类型,这是更好的方法,恕我直言.
4> JaredPar..:您可以使用Where过载将索引与元素一起传递
var everyFourth = list.Where((x,i) => i % 4 == 0);
5> Quintin Robi..:对于循环
for(int i = 0; i < list.Count; i += n) //Nth Item..