c# - 不分组的 Entity Framework 总和和平均值

标签 c# entity-framework entity-framework-5 entity-framework-4.1

Entity Framework 中有没有办法获得以下简单查询

SQL 查询

select avg(totalsalary), avg(totalhours) from context.employeedetails where company = 1234

在 Entity Framework 中,我们正在进行分组,如下所示

employeedetails.Where(c => c.company = 1234).GroupBy(c => c.company).Select(x => new 
            {
                avgsalary = x.Average(c => c.totalsalary),
                 = x.Average(c => c.totalhours)
            })

是否有正确的方法来重写上述查询,以便我们可以避免不必要的分组

最佳答案

使用群组有问题吗? (顺便说一下,可以将其作为 GroupBy(c => c) 完成),前提是您已经使用了Where 子句进行过滤。

也就是说,它不能(据我所知)用 LINQ 编写(不生成两个查询而不是一个)。如果您对两个查询感到满意,那么您自然可以执行以下操作:

var query = context.MyTable.Where(x => x.MyVal == 1);

var querySelect = new
{
    aveValue1 = query.Average(x => x.Property1),
    aveValue2 = query.Average(x => x.Property2)
};

...但正如您所期望的,这执行速度较慢。

因此,我建议您使用已有的查询,尽管稍微更改 GroupBy OR 或者,通过将其编写为存储过程并将 SP 映射到您的上下文,您可能会获得稍微更好的性能,以便您只能说:

var query = myContext.MyStoredProcedure(companyId);

(例如)!希望有帮助。

关于c# - 不分组的 Entity Framework 总和和平均值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22894064/

相关文章:

c# - Microsoft 身份验证自动登录帐户。用户手动选择账户时导致 "Correlation failed"错误

c# - 在不使用 HttpContext.Current 的情况下确定 URL 主机名?

c# - 创建新数据库条目时违反命令查询分离

c# - 通过反射从某些给定字符串创建强类型 LINQ 查询的最佳方法是什么

sql-server-2008-r2 - Entity Framework 代码第一基类未映射到数据库

c# - ASP.Net MVC 中错误模型的编译时错误

c# - 如何导入 Microsoft.AspNetCore.Hosting.IWebHostEnvironment?

entity-framework - 值为 0 的 DbContext.Database.SqlQuery<T>(query, parameters) 参数作为 "default"发送到数据库

entity-framework - EF5 迁移更新-数据库-脚本错误

c# - TransactionScope 而不是使用锁