0

正しくデータを取得しています。しかし、TotalRuns を取得したい、つまり、SQL クエリにある場合は、次のように記述でき (SUM(pts.Run1)+SUM(pts.Run2)+SUM(pts.Run3)+SUM(pts.Run4)+Sum(pts.Run6)) As totalRuns ます。これを LINQ で実現するにはどうすればよいですか?

これを試しましたが、構文エラーが発生します。

これは私の 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を使用しています

4

1 に答える 1

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();
于 2012-07-04T07:10:33.567 に答える