16

単純な SQL をラムダ LINQ に変換するのに数時間を費やしています

SELECT ID, AVG(Score) FROM myTable
GROUP BY ID

何か案が?

4

3 に答える 3

30
from t in myTable
group t by new {
  t.ID
} into g
select new {
  Average = g.Average(p => p.Score),
  g.Key.ID
}

またはラムダ

myTable.GroupBy(t => new  {ID = t.ID})
   .Select (g => new {
            Average = g.Average (p => p.Score), 
            ID = g.Key.ID 
         })
于 2013-03-29T03:25:00.410 に答える
2

Linq-to-Objects で同等のものは、以下のようなものになります。

var results = from row in myTable
              group row by row.Id into rows 
              select new 
              {
                  Id = rows.Key,
                  AverageScore = rows.Average(row => row.Score)
              };

ORM のようなエンティティ フレームワークの場合は、わずかに異なります。つまり、データ コンテキストまたは適切な DbSet/ObjectSet を通過する必要があります。

于 2013-03-29T03:24:09.063 に答える
0
var _result =   from a in myTable
                group a by a.ID into g
                select new
                {
                    ID = g.Key.ID,
                    AverageResult = g.Average(x => x.Score)
                }
于 2013-03-29T03:23:47.617 に答える