[英]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()
扩展方法足够智能,不会循环遍历枚举,在这种情况下,它将直接使用基础Length
或Count
属性。
如果您最终想将其转换为列表,最好先调用 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.