首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何从List<T>中获取每n个项目?

如何从List<T>中获取每n个项目?
EN

Stack Overflow用户
提问于 2009-03-25 17:27:56
回答 10查看 86.5K关注 0票数 125

我使用的是.NET 3.5,希望能够从列表中获得每*n*个项目。我不关心它是使用lambda表达式还是LINQ实现的。

编辑

看起来这个问题引发了相当多的争论(这是一件好事,对吧?)我学到的主要事情是,当你认为你知道做某事的所有方法时(即使如此简单),再想一想!

EN

回答 10

Stack Overflow用户

回答已采纳

发布于 2009-03-25 17:33:24

代码语言:javascript
复制
return list.Where((x, i) => i % nStep == 0);
票数 213
EN

Stack Overflow用户

发布于 2009-03-25 17:30:26

我知道这很“老派”,但为什么不直接使用带有loop = n的for循环呢?

票数 39
EN

Stack Overflow用户

发布于 2009-03-25 17:33:30

听起来像是

代码语言:javascript
复制
IEnumerator<T> GetNth<T>(List<T> list, int n) {
  for (int i=0; i<list.Count; i+=n)
    yield return list[i]
}

就能达到目的。我认为没有必要使用Linq或lambda表达式。

编辑:

搞定

代码语言:javascript
复制
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的方式写

代码语言:javascript
复制
from var element in MyList.GetNth(10) select element;

第二次编辑

为了让它更具LINQish

代码语言:javascript
复制
from var i in Range(0, ((myList.Length-1)/n)+1) select list[n*i];
票数 37
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/682615

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档