问题描述
|
我试图获取存储在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
属性。