一尘不染

IEnumerable没有Count方法

c#

我有以下方法:

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

public IEnumerable<RuleViolation> GetRuleViolations(){
  //code here
}

为什么当我在.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


阅读 313

收藏
2020-05-19

共1个答案

一尘不染

您添加:

using System.Linq;

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

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

编辑:实际上,使用Count()此处效率相对较低(至少在LINQ to Objects中)。您只想知道是否有 任何
元素,对吗?在这种情况下,Any()更合适:

public bool IsValid
{
  get { return !GetRuleViolations().Any(); }
}
2020-05-19