Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Existe-t-il une fonction dans Entity Framework qui se traduit par la fonction RANK() dans SQL ?

AFAIK Rank() n'a pas de fonction intégrée dans LINQ. Cette réponse utilise votre approche, mais cela semble fonctionner pour eux. Voici comment vous pouvez l'utiliser :

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