Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Esiste una funzione in Entity Framework che si traduce nella funzione RANK() in SQL?

AFAIK Rank() non ha alcuna funzione incorporata in LINQ. Questa risposta usa il tuo approccio, ma sembra funzionare per loro. Ecco come potresti 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
        });