2013-03-29 46 views

回答

14
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 
     }) 
用什么语言
+0

谢谢。正是我需要的。伟大的作品 – Yuri

+0

欢迎您。努力学习 :) – spajce

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) 
       } 
+1

请注意'g.Key.ID'不存在,不会编译。这段代码中只需要'g.Key'。 –

+0

@AnonyPegram为什么不能编译?我只是测试它。 –

+0

此版本?你应该得到一个错误消息,粗略地说明''int'不包含'ID'的定义,也没有扩展方法'ID'接受......“(将int的实际属性替换为ID)。要点是'g.Key' *是ID。它不是包含ID属性的对象。 –

1

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。