Consulta LINQ con agrupación y clasificación
Tengo una tabla sql llamada predicciones con datos como a continuación
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
Cada fila de la tabla representa un partido de fútbol, por lo tanto, varios por semana.
El resultado que necesito es
Player Count of Weekly wins
Mark 2
Pete 1
Así que Mark tuvo la mayor cantidad de puntos en la semana 2011011 y 201103, Pete tuvo la mayor cantidad de puntos en la semana 201102
Obtener el número total de puntos por jugador por semana es fácil. Pero no puedo averiguar cómo sacar el máximo provecho de ese grupo semanal y llegar al resultado que necesito.
Tengo esta consulta todo en sql usando la función RANK y luego seleccionando a todos los jugadores que tienen un rango de 1. Esto es bueno porque si dos jugadores tienen el mismo puntaje durante una semana, ambos se cuentan correctamente. ¡Pero quiero una versión LINQ porque es genial y se adapta a mi reelaboración de un sitio web!
Cualquier ayuda sería apreciada.
Bien, llegué hasta aquí, que es la suma de los datos de cada jugador para cada semana. Lo que ahora necesito hacer es elegir la entrada superior para cada semana y contarla contra el jugador
(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),
})
Dando
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
Entonces la verdadera respuesta de esta tabla es
Player Wins
Sandra Philips 2
Brendan 1
ranteld 1
Espero que aclare