Organizational Research By

Surprising Reserch Topic

ienumerable doesnt have a count method


ienumerable doesnt have a count method  using -'c#,asp.net,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
  type
  'System.Collections.Generic.IEnumerable'
  could be found (are you missing a
  using directive or an assembly
  reference?)   c:\users\a\documents\visual
  studio
  2010\Projects\NerdDinner\NerdDinner\Models\Dinner.cs  15  47  NerdDinner

    

asked Sep 22, 2015 by shegokar.anjeet
0 votes
14 views



Related Hot Questions

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

...