Просто передайте данные в следующую функцию (обратите внимание, что код находится в c #) // dt должен содержать точки столбца, но не столбец ранга
я есть таблица SQL под названием прогнозы с данными, как показано ниже
Week Player Points
201101 Mark 7
201101 Mark 7
201101 Pete 7
201101 Pete 3
201101 Mark 5
201102 Mark 2
201102 Mark 3
201102 Pete 7
201102 Pete 5
201102 Mark 5
201103 Mark 7
201103 Mark 7
201103 Pete 7
201103 Pete 3
201103 Mark 5
Каждый ряд в таблице представляет футбольный матч, следовательно, несколько в неделю
Результат мне нужен
Player Count of Weekly wins
Mark 2
Pete 1
Таким образом, у Марка было больше всего очков на неделе 2011011 и 201103, у Пита было больше всего очков на неделе 201102
Набрать общее количество очков на игрока в неделю легко. Но я не могу понять, как взять максимум из этой еженедельной группы и достичь результата, который мне нужен.
У меня есть все это в SQL-запросе с использованием функции RANK, а затем выбираю всех игроков с рангом 1. Это хорошо, потому что, если два игрока имеют одинаковый счет в течение недели, они оба подсчитываются правильно. Но я хочу версию LINQ, потому что она классная и соответствует моей переработке веб-сайта!
Любая помощь будет оценена.
Хорошо, я дошел до того, что суммирую данные для каждого игрока за каждую неделю. Что мне теперь нужно сделать, это выбрать верхнюю запись для каждой недели и считать ее против игрока
(from p in FootballPredictions
where p.FootballMatches.WeekNum <= 201101 && p.Points != null
group p by new { p.FootballMatches.WeekNum, p.Player } into g
orderby g.Key.WeekNum, g.Sum(p => p.Points) descending
select new
{
WeekNum = g.Key.WeekNum,
Player = g.Key.Player,
Points = g.Sum(p => p.Points),
})
дающий
WeekNum Player Points
201033 ranteld 26 <--- 1 point
201033 nicolap 25
201033 Mark 25
201033 1969 cup winners 25
201033 footysi 24
201033 Brendan 22
201033 monty 22
201033 Sandra Phillips 21
201033 SPB 20
201033 John Poulton 20
201033 RobBrown 19
201033 Steve Gardner 17
201033 Nick 16
201033 MikeSpeke 15
201034 Sandra Phillips 32 <--- 1 point
201034 Steve Gardner 27
201034 ranteld 25
201034 John Poulton 23
201034 footysi 23
201034 Mark 17
201034 nicolap 13
201034 Brendan 13
201035 Brendan 34 <--- 1 point
201035 Sandra Phillips 34 <--- 1 point
201035 nicolap 31
201035 1969 cup winners 25
201035 MikeSpeke 24
201035 Steve Gardner 22
201035 Mark 20
201035 ranteld 20
201035 Football Freddie 16
Таким образом, реальный ответ из этой таблицы
Player Wins
Sandra Philips 2
Brendan 1
ranteld 1
Надеюсь что прояснит