2010-07-26 7 views
3

En utilisant Ado.Net Entity Framework, j'essaie d'obtenir les «3 premiers» éléments d'une table en fonction du nombre de fois qu'ils apparaissent dans une table.Comment puis-je obtenir les 5 premiers éléments d'une base de données en fonction de l'occurrence d'un champ particulier?

Par exemple:

Tableau: basket_to_product_id | panier_id | product_id

Je veux voir combien de fois product_id se produit, et j'aimerais retourner les 3 premiers_produits les plus fréquents.

Je suis coincé à:

List<BasketToProduct> btplist = entities.BasketToProduct. ..........? 

Répondre

1

Quelque chose comme cela devrait fonctionner (bien sûr, je ne connais pas les vrais noms de vos propriétés):

IEnumerable<int> top3ProductIds = (from btp in entities.BasketToProduct 
            group btp by btp.ProductId into g 
            orderby g.Count() descending 
            select g.Key).Take(3); 
0

Vous pouvez essayer d'utiliser une requête LINQ sur la table.

0

Essayez ceci:

var query = entities.BasketToProduct 
         .GroupBy(btp => btp.ProductID) 
         .Select(g => ProductID = g.Key, Count = g.Count()) 
         .OrderBy(g => g.Count) 
         .Take(3); 

Il vous obtenez les trois premiers ProductIDs et leurs comptes associés.