IEnumerable没有Count方法

ahe*_*ang 76 c# asp.net enumerable

我有以下方法:

public bool IsValid
{
  get { return (GetRuleViolations().Count() == 0); }
}

public IEnumerable<RuleViolation> GetRuleViolations(){
  //code here
}
Run Code Online (Sandbox Code Playgroud)

为什么当我在.Count()上面做时它用红色加下划线?

我收到以下错误:

错误1'System.Collections.Generic.IEnumerable'不包含'Count'的定义,并且没有扩展方法'Count'接受类型'System.Collections.Generic.IEnumerable'的第一个参数可以找到(你错过了吗?使用指令或程序集引用?)c:\ users\a\documents\visual studio 2010\Projects\NerdDinner\NerdDinner\Models\Dinner.cs 15 47 NerdDinner

Jon*_*eet 151

你添加:

using System.Linq;
Run Code Online (Sandbox Code Playgroud)

在源代码的顶部,并确保您有一个System.Core程序集的引用.

Count()System.Linq.EnumerableLINQ to Objects 的静态类,以及System.Linq.QueryableLINQ to SQL和其他进程外提供程序提供的扩展方法.

编辑:事实上,Count()在这里使用是相对低效的(至少在LINQ to Objects中).所有你想知道的是否有任何元素,对吧?在这种情况下,Any()更适合:

public bool IsValid
{
  get { return !GetRuleViolations().Any(); }
}
Run Code Online (Sandbox Code Playgroud)


Ren*_*iot 9

Any()Count()Linq 中的方法仅适用于泛型类型。

IEnumerable<T>
Run Code Online (Sandbox Code Playgroud)

如果您有一个IEnumerable没有类型的简单,请尝试使用

IEnumerable<object> 
Run Code Online (Sandbox Code Playgroud)

反而。