public int UserId {get;set;}
public int NbPoints {get;set;}
public static void Main()
new Data { UserId = 1, NbPoints = 10 },
new Data { UserId = 2, NbPoints = 10 },
new Data { UserId = 1, NbPoints = 5 },
new Data { UserId = 3, NbPoints = 5 },
new Data { UserId = 2, NbPoints = 40 },
new Data { UserId = 1, NbPoints = 10 }
var groupByandSortedData = myData.GroupBy(r => r.UserId)
.Select(g => new { User = g.Key, ActualScore = g.Sum(s => s.NbPoints) })
.OrderByDescending(p => p.ActualScore);
Console.WriteLine(groupByandSortedData.Skip(2).FirstOrDefault());
Console.WriteLine(groupByandSortedData.ElementAtOrDefault(ranking-1));
Console.WriteLine(groupByandSortedData.ToList()[ranking-1]);