当前位置:  开发笔记 > 编程语言 > 正文

计算IEnumerable <T>的最佳方法

如何解决《计算IEnumerable<T>的最佳方法》经验,为你挑选了4个好方法。

什么是最好/最简单的方法来获取IEnumerable集合中的项目数而不枚举集合中的所有项目?

可以使用LINQ或Lambda吗?



1> Konrad Rudol..:

无论如何,你必须循环它.Linq提供的Count方法:

var result = myenum.Count();


是的,只要您拥有“ using System.Linq;”,此方法就可以使用。在文件的开头。没有Linq,这是行不通的。

2> ICR..:

解决方案取决于您不希望通过集合枚举的原因.

如果是因为枚举集合可能很慢,那么没有更快的解决方案.如果可能,您可能需要考虑使用ICollection.除非枚举非常慢(例如,它从磁盘读取项目),速度不应该是一个问题.

如果是因为枚举集合将需要更多代码,那么它已经以.Count()扩展方法的形式为您编写.只需使用MyEnumerable.Count().

如果是因为您希望能够在计数后枚举该集合,那么.Count()扩展方法允许这样做.你甚至可以在你正在枚举的集合上调用.Count(),它将继续从计数之前的位置开始.例如:

foreach (int item in Series.Generate(5))
{
    Console.WriteLine(item + "(" + myEnumerable.Count() + ")");
}

会给出结果

0(5)

1(5)

2(5)

3(5)

4(5)

如果这是因为枚举有副作用(例如写入磁盘/控制台)或依赖于可能在计数和枚举之间改变的变量(例如从磁盘读取)[NB如果可能,我建议重新考虑体系结构,因为这可能导致很多问题]然后考虑的一个可能性是将枚举读入间歇存储.例如:

List seriesAsList = Series.Generate(5).ToList();

以上所有假设您无法更改类型(即,它是从您不拥有的库中返回的).如果可能,您可能需要考虑更改为使用ICollection或IList(ICollection的范围比IList更广泛),其上有一个Count属性.



3> Brian Leahy..:

您必须枚举以获得计数.像List这样的其他构造保持运行计数.



4> Mukesh..:

用这个.

IEnumerable list =..........;

list.OfType().Count()

它将返回计数.


list.OfType ().COUNT()
推荐阅读
mobiledu2402851203
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有