2012-07-04 2 views
0

Я получаю данные правильно. Но я хочу получить TotalRuns, т. Е. Если он находится в SQL Query, я могу написать его как (SUM(pts.Run1)+SUM(pts.Run2)+SUM(pts.Run3)+SUM(pts.Run4)+Sum(pts.Run6)) As totalRuns Как добиться этого в LINQ?Как достичь LINQ SUM с несколькими столбцами без группы по

Я пробовал this один, но он дает синтаксическую ошибку.

Это мой запрос 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) 

               }; 

Я использую .NET 4.0

+0

Чего _exactly_ вы хотите достичь? Сумма всех прогонов во всех играх игрока в сезоне? И пусть эта сумма будет частью записи «PlayerScore»? –

+0

Мне нравится, как я не понимал, что это связано с крикетом, пока я не вернулся к вопросу через 24 часа ... – Rawling

+0

Да. Я просто хочу вычислить счет игрока ») – kbvishnu

ответ

3

Если вы просто хотите totalRuns для каждой строки, то вы можете сделать

{ 
    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) 
}; 

Если вы хотите, всего выполняется для всех строк, после того, как запроса вы могли бы сделать:

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

или если у вас не было TotalRuns как поле, просто переместить добавление каждой строки к Ламбе :

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

Есть ли что-то эквивалентное SQL SUM? – kbvishnu

+0

Я отредактирую свой ответ –

Смежные вопросы