gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 14:41:39 27 4
gpt4 key购买 nike

任何人都可以帮助以缩写形式将此 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/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com