Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Gibt es eine Funktion in Entity Framework, die in die RANK()-Funktion in SQL übersetzt wird?

AFAIK Rank() hat keine eingebaute Funktion in LINQ. Diese Antwort verwendet Ihren Ansatz, aber es scheint für sie zu funktionieren. So könnten Sie es verwenden:

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