【问题标题】:Using entity framework and MSSQL AVG() function使用实体框架和 MSSQL AVG() 函数
【发布时间】:2013-10-07 09:26:11
【问题描述】:
我有这行代码(使用MSSQL):
double avg = db.MyTable.Where(x => x.RecordDate < today).Select(z => z.value).Average();
我想知道这是翻译成SQLAVG()函数还是Average()在客户端运行?
这个表每天包含 50,000 条记录,我更喜欢让数据库计算平均值并只传回一个值。
而且,我怎样才能看到发送到数据库的SQL 查询?
【问题讨论】:
标签:
sql
c
sql-server-2008
entity-framework
average
【解决方案1】:
如果你不枚举你的queryable,是的,average 将在 db 端完成。
您还可以简化代码。不需要选择,以Expression<Func<T, double>>(或小数,整数...)作为参数的平均值存在过载。
double avg = db.MyTable.Where(x => x.RecordDate < today).Average(z => z.value);
查看生成的sql的方法有很多,可以googlesql generated linq,或者看看here,例如