C#精简列表<>

Fel*_*lix 0 c# list

我有一个列表,可以说3600项.我想使用例如因子5来稀疏该列表.因此在(新)列表中将保留720个项目.但是没有改变列表的"过程".起点和终点应始终保持不变.

喜欢:1 - > 跳过30 - > 31

怎么做?

Dan*_*mov 13

应该是这样的:

var last = list.Count - 1;
var thin = list.Where ((item, i) => i % 30 == 0 || i == last);
Run Code Online (Sandbox Code Playgroud)

如果我正确理解你的观点.

请注意,thin将是IEnumerable<int>List<int>.
通常这就足够了 - 您可以在foreach循环中枚举它并使用其他LINQ方法.
但它会被懒惰地评估,也就是说,如果你原来的list改变,thin也会改变.

如果你想获得一个List<int>,只需追加一个ToList ()电话:

var last = list.Count - 1;
var thin = list.Where ((item, i) => i % 30 == 0 || i == last)
               .ToList ();
Run Code Online (Sandbox Code Playgroud)

同样,要获取数组,请使用ToArray ().

不要忘记添加using System.Linq;这个工作.
另请参阅101 LINQ样本以获得更高级的过滤,聚合和分组.