我正在尝试获取存储在Ienumerable对象中的元素的计数。这没有count属性,所以如何得到var对象的计数?
由于
答案 0 :(得分:11)
您可以使用从.NET 3.5开始的Count()扩展方法:
IEnumerable<Foo> foos = ...
int numberOfFoos = foos.Count();
确保通过以下方式将其纳入范围:
using System.Linq;
并且不要担心性能,Count()
扩展方法足够智能,如果实际类型是例如静态数组或列表,则它不会循环遍历可枚举,在这种情况下,它将直接使用底层Length
或Count
属性。
答案 1 :(得分:0)
您应该使用Count()
方法。 Enumerables没有Count
属性。
答案 2 :(得分:0)
除了迭代IEnumerable
之外,您无法执行任何操作。
因此,要获得计数,您必须编写此代码:
int count = 0;
foreach(var item in enumerable) {
++count;
}
// Now count has the correct value
为了省去尴尬,LINQ提供了Count
扩展方法。您需要using System.Linq
才能使用它。
另外,请注意,根据IEnumerable
的性质,可能无法多次迭代它(尽管这是一种罕见的情况)。如果您手中有这样的物体,计算物品数量将有效地使其对未来的工作无效。
答案 3 :(得分:0)
如果您最终想要将其转换为列表,最好先调用ToList。 特别是当你的lambada表达式绑定一个外部变量时:
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.