c# - Entity Framework ——如何在缩写的 EF linq 中实现这个 SQL

标签 c# .net entity-framework linq-to-entities entity-framework-4

任何人都可以帮助以缩写形式将此 SQL 实现为 Entity Framework Linq 的 C# 代码是什么? (例如,你有“.”符号的地方,例如 xxx.where(... etc)

SELECT PN.Name, Sum(U.Amount)
FROM Usages as U, ProcessNames as PN
WHERE PN.Id == U.ProcessNameId 
   AND U.Datetime BETWEEN '2010-01-08' AND '2010-10-11'
Group By PN.Name

最佳答案

基于方法的查询:
要在 lambda 中实现这一点,我们需要利用 Queryable.GroupJoin :

var query = context.ProcessNames
    .GroupJoin(context.Usages
                      .Where(u => u.Datetime >= new DateTime(2010, 1, 8) ) 
                                  && u.Datetime <= new DateTime(2010, 10, 11),
               pn  => pn.Id,
               u => u.ProcessNameId, 
               (pn, usages) => new { Name = pn.Name, 
                                     Sum = usages.Sum(u => u.Amount) });


查询表达式:
以及查询表达式语法中的相同查询:

var query = 
    from pn in context.ProcessNames
    join u in context.Usages
                     .Where(u => u.Datetime >= new DateTime(2010, 1, 8) ) 
                                 && u.Datetime <= new DateTime(2010, 10, 11),
    on pn.Id 
    equals u.ProcessNameId 
    into g                      
    select new { Name = pn.Name, 
                 Sum = g.Sum(u => u.Amount) };


检查生成的 SQL:
要验证这些查询是否在运行时为您提供所需的 Sql 命令,您可以这样做:

string sqlCommand = ((ObjectQuery)query).ToTraceString();


更多示例:
有关 GroupJoin 的一些很好的示例,请查看以下内容:

Method-Based Query Syntax Examples: Join Operators
<强> Query Expression Syntax Examples: Join Operators

关于c# - Entity Framework ——如何在缩写的 EF linq 中实现这个 SQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3887188/

相关文章:

c# - 在 C# 中获取 'ldftn' 函数指针

c# - 如何在标签中显示耗时

c# - Entity Framework Core 不从引用表加载相关数据

c# - 命名参数顺序对 MySql .Net 数据提供程序有意义吗?

.net - DataGridView图像仅显示 "System.Drawing.Bitmap"

c# - 有没有办法在 VS2008 之外的安装项目中执行 "Refresh Dependencies"?

.net - 在 MVC 5 Membership 中更改密码长度

entity-framework - 如何使用 DotConnect for PostgreSQL 查询 Entity Framework 实体的空字段值

c# - MVC5和EF6.1.3脚手架问题

c# - DDD : Referencing non root Entities by Id from other Aggregates?