2010-10-04 14 views
12

Je veux interroger une Liste <> et découvrir comment de nombreux éléments correspondent aux critères de sélection. en utilisant LINQ et C# /.net 3.5. Comment puis-je modifier la requête pour renvoyer un nombre int.Obtenir le nombre d'éléments d'une liste <> en utilisant Linq

var specialBook = from n in StoreDisplayTypeList 
        where n.DisplayType=="Special Book" 
        select n; 

Répondre

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

Celui-ci utilise une surcharge de Enumerable.Count qui prend un prédicat Func<TSource, bool> pour filtrer la séquence.

5

entourez votre requête comme ceci: (from ... select n).Count().

18

Essayez ceci:

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

Mais si vous avez besoin des données aussi bien, vous voudrez peut-être fonctionner avec IEnumerable. Ainsi, vous pouvez utiliser votre requête et accéder à la méthode d'extension Count() quand vous le voulez.

var specialBook = from n in StoreDisplayTypeList 
        where n.DisplayType=="Special Book" 
        select n; 
int num = specialBook.Count();