sql >> Base de Datos >  >> RDS >> Sqlserver

¿Existe una función en Entity Framework que se traduzca en la función RANK() en SQL?

AFAIK Rank() no tiene una función integrada en LINQ. Esta respuesta utiliza su enfoque, pero parece funcionar para ellos. Así es como podría usarlo:

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
        });