Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Existe uma função no Entity Framework que se traduz na função RANK() no SQL?


AFAIK Rank() não tem função interna no LINQ. Esta resposta usa sua abordagem, mas parece funcionar para eles. Veja como você pode usá-lo:
var customersByCountry = db.Customers
    .GroupBy(c => c.CountryID);
    .Select(g => new { CountryID = g.Key, Count = g.Count() });
var ranks = customersByCountry
    .Select(c => new 
        { 
            c.CountryID, 
            c.Count, 
            Rank = customersByCountry.Count(c2 => c2.Count > c.Count) + 1
        });