C#:对可枚举的对象进行计数

问题描述

| 我试图获取存储在Ienumerable对象中的元素的数量。没有为此的count属性,那么如何获取var对象的count? 谢谢     

解决方法

        您可以使用从.NET 3.5开始的Count()扩展方法:
IEnumerable<Foo> foos = ...
int numberOfFoos = foos.Count();
确保通过以下方式将其纳入范围:
using System.Linq;
不用担心性能,如果实际类型是例如静态数组或列表,则
Count()
扩展方法足够智能,以至于不会遍历可枚举,在这种情况下它将直接使用基础的
Length
Count
属性。     ,        您不能对ѭ5进行任何操作,除非对其进行迭代。 因此,要获得计数,您必须编写以下代码:
int count = 0;
foreach(var item in enumerable) {
    ++count;
}

// Now count has the correct value
为了节省您的尴尬,LINQ提供了
Count
扩展方法。您需要做
using System.Linq
才能使用它。 另外,请注意,根据ѭ5的性质,可能无法对其进行一次以上的迭代(尽管这种情况很少见)。如果您手中有这样的物体,则计算物品的数量将有效地使其对以后的工作毫无用处。     ,        如果最终要将其转换为列表,最好先调用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.
    ,        您应该使用
Count()
方法。可枚举没有
Count
属性。