Cómo lograr LINQ SUM con múltiples columnas sin grupo por

Estoy recibiendo los datos correctamente. Pero quiero obtener TotalRuns, es decir, si está en SQL Query, puedo escribirlo como (SUM(pts.Run1)+SUM(pts.Run2)+SUM(pts.Run3)+SUM(pts.Run4)+Sum(pts.Run6)) As totalRuns ¿Cómo puedo lograr esto en LINQ?

Lo intenté este uno pero da un error de sintaxis.

Esta es mi consulta LINQ.

          var playerScore = from pts in Oritia_entities.PlayerTeamSeasons
          join p in Oritia_entities.Players on new { ID = pts.PlayerId } 
    equals new { ID = p.ID }
           join c in Oritia_entities.Crews on new { ID = p.CrewId } 
    equals new { ID = c.ID }
           join f in Oritia_entities.Fixtures on new { ID = pts.FixtureId } 
equals new { ID = f.Id }
          where c.ID == playerID && pts.SeasonId == seasonID
            select new PlayerScore
                                              {
                                                  BallsFaced = (int)pts.BallsFaced,
                                                  Run1 = (int)pts.Run1,
                                                  Run2 = (int)pts.Run2,
                                                  Run3 = (int)pts.Run3,
                                                  Run4 = (int)pts.Run4,
                                                  Run6 = (int)pts.Run6,

                                                  BallsBowled = (int)pts.BallsBowled,
                                                  RunsGiven = (int)pts.RunsGiven,
                                                  Wickets = (int)pts.Wickets,
                                                  Catches = (int)pts.Catches,
                                                  Dot = (int)pts.Dot,
                                                  NoBall = (int)pts.NoBall,
                                                  RunOutBy = (int)pts.RunOutBy,
                                               //   Match = (t1.T + " v/s " + f.Team2)

                                              };

Estoy usando .Net 4.0

preguntado el 04 de julio de 12 a las 07:07

Qué exactamente quieres lograr? ¿La suma de todas las carreras en todos los partidos de un jugador en una temporada? Y que esa suma sea parte de la PlayerScore ¿registro? -

Me encanta cómo no me di cuenta de que esto estaba relacionado con el cricket hasta que volví a la pregunta después de 24 horas... -

Si. Solo quiero calcular la puntuación del jugador ") -

@GertArnold busqué mucho antes de preguntar, de todos modos, gracias por el enlace. Lo intentaré :) -

1 Respuestas

Si solo desea totalizar Runs para cada fila, puede hacerlo

{
    BallsFaced = (int)pts.BallsFaced,
    Run1 = (int)pts.Run1,
    Run2 = (int)pts.Run2,
    Run3 = (int)pts.Run3,
    Run4 = (int)pts.Run4,
    Run6 = (int)pts.Run6,
    TotalRuns = (int)pts.Run1 + (int)pts.Run2 + (int)pts.Run3 ...,
    BallsBowled = (int)pts.BallsBowled,
    RunsGiven = (int)pts.RunsGiven,
    Wickets = (int)pts.Wickets,
    Catches = (int)pts.Catches,
    Dot = (int)pts.Dot,
    NoBall = (int)pts.NoBall,
    RunOutBy = (int)pts.RunOutBy,
    //   Match = (t1.T + " v/s " + f.Team2)
};

Si desea las ejecuciones totales para TODAS las filas, después de la consulta podría hacer:

var sum = playerScore.Select(x=>x.TotalRuns).Sum();

o si no tenía TotalRuns como campo, simplemente mueva la adición de cada fila a la lamba:

var sum = playerScore.Select(x=>x.Run1 + Run2 + Run3 ...).Sum();

Respondido 05 Jul 12, 07:07

¿Hay algo equivalente a SQL SUM? - kbvishnu

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.