我应该使用Any()还是Count()?哪一个更快?如果IEnumerable对象中存在任何数据,两者都会返回相同的输出(True或false)吗?

SDK*_*SDK 0 c# linq asp.net-mvc

我在asp.net mvc控制器下面有类似的代码...

IEnumerable<object> object = null;
IEnumerable<object1> object1 = null;

object = object1.where(s=>s.IsActive);

If(object.Any())
{
    ...
}
Run Code Online (Sandbox Code Playgroud)

要么

if(object.Count > 0)
{
    ...
}
Run Code Online (Sandbox Code Playgroud)

我的问题是,如果在"对象"存在的任何数据都将在object.Any()object.Count > 0这两个将返回相同的结果(truefalse)或两者有什么不同?

拜托,有人可以帮我吗?

Nik*_*wal 5

Any会更快,因为(在你的情况下IEnumerable <object>)只要找到符合条件的第一个元素,它就会返回true.

而Count必须一直到集合的末尾(读取迭代集合)才能得到结果.

Food4Thought:
1.你的将因为收集而抛出异常null.
2. object1.Where (s => s.IsActive);将显示编译时异常s.IsActive因为集合属于object类型且IsActive不是对象类中的属性.将其更改为IEnumerable<My_Class_Which_Have_Is_Active_Property>.