Mam poniższe zapytanie, które pobiera Name i TotalPoints w następujący sposób:
var gradeData = (from data in oAngieCtxt.prc_ShopInstanceCustomersData(Convert.ToInt32(this.ShopInstanceID), 10000, false)
.Where(row => row.RecievedPoints != "n/a")
.GroupBy(row => new { row.Name })
.Select(g => new
{
TotalPoints = g.Sum(x => Convert.ToDouble(x.RecievedPoints) * (x.Weightage.ToString() == "0.00" ? 1 : Convert.ToDouble(x.Weightage))),
Name = g.Key.Name
})
select data).ToList();
Będę miał dane takie jak poniżej:
TotalPoints Name
5 A
10 B
5 C
15 D
5 E
Jeśli obserwujemy powyższą listę 5 jest najbardziej powszechna. Muszę pobrać tę wartość z "gradeData".
Jak mogę to zdobyć?
Odpowiedzi:
6 dla odpowiedzi № 1var mostCommon = gradeData.GroupBy(x => x.TotalPoints)
.OrderByDescending(g => g.Count())
.Select(g => g.Key)
.First();
2 dla odpowiedzi nr 2
Poniższe zapytanie daje najbardziej popularny punkt wraz ze wszystkimi powiązanymi nazwami:
var result = gradeData.GroupBy(x => x.TotalPoints)
.OrderByDescending(x => x.Count())
.Select(g => new
{
TotalPoints = g.Key,
Names = g.Select(x => x.Name).ToList()
})
.First();