我在linq中可以找到的所有聚合都有一个“group by”子句。我如何在LINQ中编写此查询?我有一个日期 - 值对列表,我想取平均值:
SELECT AVG(MySuff.Value) AS AvgValue FROM MyStuff
答案 0 :(得分:4)
int count = (from a in myContext.MyStuff
select a).Count();
假设myContext是DataContext。
请注意,这可以让您立即执行,这可能是您不想要的。
您可以将查询结果存储在var:
中var allResults = from a in myContext.MyStuff
select a;
//sometime later when needed
int count = allResults.Count(); // executes the SQL query now!
答案 1 :(得分:2)
LINQ中有很多非分组聚合运算符。 Alan的回答显示Count
运算符,但MSDN lists others。
编辑:看过你的编辑后,看起来你想要Average运算符。
答案 2 :(得分:1)
应该注意的是,Alan的LINQ代码将准确地产生AlanR的SQL代码,尽管你可能会猜测它。
但是,应该在这里谨慎行事。如果它写成:
var q = from a in MyStuff select a;
int count = q.count();
foreach(MyStuff m in q) {...}
然后,这将生成两个数据库查询:第一个作为“select count(*)...”,第二个作为“select * ....”
答案 3 :(得分:1)
修改后的例子(我相信)的答案是:
var average = (from a in MyStuff
select a.Value).Average();
答案 4 :(得分:1)
有点分拣机
pairs.Average(a=>a.Value)
如果没有联接,分组或让,查询表达式(来自...)在我看来不值得。
答案 5 :(得分:0)
谢谢大家的帮助。这就是我所确定的,有效。
(from s in series select s).Average( a => a.Value )
此致 艾伦... - [R