ienumerable doesnt have a count method

ienumerable doesnt have a count method  using -'c#,,enumerable'

I have the following method:

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

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

Why is it that when I do .Count() above it is underlined in red?

I got the following error:

  Error 1   'System.Collections.Generic.IEnumerable'
  does not contain a definition for
  'Count' and no extension method
  'Count' accepting a first argument of
  could be found (are you missing a
  using directive or an assembly
  reference?)   c:\users\a\documents\visual
  2010\Projects\NerdDinner\NerdDinner\Models\Dinner.cs  15  47  NerdDinner


asked Sep 22, 2015 by shegokar.anjeet
0 votes

2 Answers

0 votes

You add:

using System.Linq;

at the top of your source and make sure you've got a reference to the System.Core assembly.

Count() is an extension method provided by the System.Linq.Enumerable static class for LINQ to Objects, and System.Linq.Queryable for LINQ to SQL and other out-of-process providers.

EDIT: In fact, using Count() here is relatively inefficient (at least in LINQ to Objects). All you want to know is whether there are any elements or not, right? In that case, Any() is a better fit:

public bool IsValid
  get { return !GetRuleViolations().Any(); }
answered Sep 22, 2015 by shikhar jain
0 votes

IEnumeration does not have a method called Count(). It's just a kind of "sequence of elements". Use for example List if you explicitly need the number of elements. If you use Linq keep in mind, that the extension method Count() may actually re-count the number of elements each time you call it.

answered Sep 22, 2015 by sanjaypal1983