C# 如何对IEnumerable进行计数?

C# 如何对IEnumerable进行计数?,c#,C#,我希望能够测试下面的obj计数,但不能这样做。 当我将鼠标移到obj上时,它显示计数为3 <IEnumerable<File> obj = await _mytester.cleanup(myitems) 上面的行给了我一个错误你不能这样做,因为IEnumerable上不存在计数,这是出于设计 您可以像这样使用IEnumerable.Count(): if(obj.Count()>0) 但这是非常低效的,因为你实际上只是在检查那里是否有任何东西 你最好这样做: if(

我希望能够测试下面的obj计数,但不能这样做。 当我将鼠标移到obj上时,它显示计数为3

    <IEnumerable<File> obj = await _mytester.cleanup(myitems)

上面的行给了我一个错误

你不能这样做,因为
IEnumerable
上不存在
计数
,这是出于设计

您可以像这样使用
IEnumerable.Count()

if(obj.Count()>0)

但这是非常低效的,因为你实际上只是在检查那里是否有任何东西

你最好这样做:

if(obj.Any())

这两种方法都是由LINQ扩展方法提供的


非常重要的是要注意,
Count()
正在迭代所有元素,远没有像
ICollection.Count那样高效。Count

您可以调用
Count()
扩展方法<代码>如果(对象计数()>0).。您可能希望使用
Any()
来检查序列是否为空
if(obj.Any())…
请参见,也没有任何理由使
IEnumerable
具有有限计数。您需要使用System.Linq添加
才能访问.NET3.5及更高版本中的这些方法,但我完全同意使用
.Any()
    if(obj.count > 0)