繁体   English   中英

C#:计数 iEnumerable object

[英]C#: Counting iEnumerable object

我正在尝试获取存储在 Ienumerable object 中的元素的计数。 这没有计数属性,所以我如何获得 var object 的计数?

谢谢

您可以使用从 .NET 3.5 开始的Count()扩展方法:

IEnumerable<Foo> foos = ...
int numberOfFoos = foos.Count();

确保您已通过以下方式将其带入 scope:

using System.Linq;

并且不要担心性能,如果实际类型是 static 数组或列表, Count()扩展方法足够智能,不会循环遍历枚举,在这种情况下,它将直接使用基础LengthCount属性。

如果您最终想将其转换为列表,最好先调用 ToList。 特别是当您的 lambda 表达式绑定外部变量时:

string str = "A,B,C";
int i = 0;
var result= str.Split(',').Select(x=>x+(i++).ToString());


var count = result.Count();
var list =result.ToList();

//Now list content is A3 B4 C5, obviously not you want.

您应该使用Count()方法。 枚举没有Count属性。

除了迭代它之外,你不能对IEnumerable做任何事情。

因此,要获得计数,您必须编写以下代码:

int count = 0;
foreach(var item in enumerable) {
    ++count;
}

// Now count has the correct value

为了省去你的尴尬,LINQ 提供了Count扩展方法来做到这一点。 您需要using System.Linq才能使用它。

另外,请注意,根据IEnumerable的性质,可能无法对其进行多次迭代(尽管这是一种罕见的情况)。 如果您手中有这样的 object,计算项目的数量将有效地使其对未来的工作毫无用处。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM