2015-03-07 4 views
1

J'ai une table Bill.sélectionnez baser sur le compte

Cette table contient un champ Id_Client.

Je veux récupérer une liste avec les clients qui dépassent un certain nombre de factures.

Dans SQL, je fais quelque chose comme ça

select Id_Client, Count(*) 
from MyDB.dbo.Bill 
group by Id_Client 
having Count(*) > 100 
order by c desc 

Où 100, est un exemple de cette limite. Je veux faire cela dans Entity Framework - LINQ.

Répondre

0

Essayez ceci:

var query= db.Bills.GroupBy(b => b.Id_Client) 
        .Select(g => new {Id_Client = g.Key, Count = g.Count()}) 
        .Where(r => r.Count > 100) 
        .OrderByDescending(r=>r.Count); 

Cette requête Linq sera traduit à cette requête SQL:

{SELECT 
[GroupBy1].[K1] AS [Id_Client], 
[GroupBy1].[A1] AS [C1] 
FROM (SELECT 
    [Extent1].[Id_Client] AS [K1], 
    COUNT(1) AS [A1] 
    FROM [dbo].[Bill] AS [Extent1] 
    GROUP BY [Extent1].[Id_Client] 
) AS [GroupBy1] 
WHERE [GroupBy1].[A1] > 100 
ORDER BY [GroupBy1].[A1] DESC}