IEnumerable没有Count方法
我有以下的方法:
public bool IsValid { get { return (GetRuleViolations().Count() == 0); } } public IEnumerable<RuleViolation> GetRuleViolations(){ //code here }
为什么当我做.Count()
上面是红色的下划线?
我得到了以下错误:
错误1'System.Collections.Generic.IEnumerable'不包含'Count'的定义,并且没有扩展方法'Count'接受types'System.Collections.Generic.IEnumerable'的第一个参数可以被发现(你是否错过了使用指令或程序集引用?)c:\ users \ a \ documents \ visual studio 2010 \ Projects \ NerdDinner \ NerdDinner \ Models \ Dinner.cs 15 47 NerdDinner
您添加:
using System.Linq;
在您的源代码顶部,并确保您有一个System.Core程序集的引用。
Count()
是LINQ to Objects的System.Linq.Enumerable
静态类提供的扩展方法,LINQ to SQL和其他进程外提供者的System.Linq.Queryable
。
编辑:事实上,这里使用Count()
是相对低效的(至less在LINQ到对象)。 所有你想知道的是,是否有任何元素,对吗? 在这种情况下, Any()
更合适:
public bool IsValid { get { return !GetRuleViolations().Any(); } }
IEnumeration
没有一个称为Count()
的方法。 这只是一种“元素序列”。 如果明确需要元素的数量,则使用List
。 如果你使用Linq记住,扩展方法Count()
实际上可以在每次调用它时重新计算元素的数量。
Linq中的Any()
或Count()
方法仅适用于非genericstypes。
IEnumerable<T>
如果您有一个简单的IEnumerable
没有types,请尝试使用
IEnumerable<object>
代替。
怎么样:
public bool IsValid { get { return (GetRuleViolations().Cast<RuleViolation>().Count() == 0); } }