24

I want to query a List<> and find out how MANY items match the selection criteria. using LINQ and c# /.net 3.5. How would I modify the query to return an int count.

var specialBook = from n in StoreDisplayTypeList 
                  where n.DisplayType=="Special Book" 
                  select n;
jjnguy
  • 136,852
  • 53
  • 295
  • 323
Geeth
  • 5,282
  • 21
  • 82
  • 133

3 Answers3

58
 var numSpecialBooks = StoreDisplayTypeList.Count(n => n.DisplayType == "Special Book");

This uses an overload of Enumerable.Count that takes aFunc<TSource, bool>predicate to filter the sequence.

Ani
  • 111,048
  • 26
  • 262
  • 307
22

Try this:

int specialBookCount = (from n in StoreDisplayTypeList 
                        where n.DisplayType=="Special Book" 
                        select n).Count()

But if you need data as well, you might want to operate with IEnumerable. So, you can use your query and access Count() extension method whenever you want.

var specialBook = from n in StoreDisplayTypeList 
                  where n.DisplayType=="Special Book" 
                  select n;
int num = specialBook.Count();
default locale
  • 13,035
  • 13
  • 56
  • 62
7

Just surround your query like this: (from ... select n).Count().

Mamun
  • 66,969
  • 9
  • 47
  • 59