C#:计算iEnumerable对象

时间:2011-06-13 18:28:56

标签: c#

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

由于

4 个答案:

答案 0 :(得分:11)

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

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

确保通过以下方式将其纳入范围:

using System.Linq;

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

答案 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.