Linq到Sql转换[重复]

xn1cxnb4  于 2022-12-06  发布在  其他
关注(0)|答案(3)|浏览(101)

此问题在此处已有答案

how to see generated sql from a linq query(7个答案)
三个月前关门了。
我在linq中有一个查询,我想将该查询转换为sql。我不太擅长linq,所以有人能帮助我将该查询转换为sql:我们有票据表和发行表票据ID在发行表中被引用:

var tickets = tickets.Where(x => x.Issues.Where(y => y.ResolutionDetails == "Resolved" &&
                                y.ResolvedwithSupplierDate == null).Count() == x.Issues.Count() && x.Issues.Count() > 0).ToList();
zsohkypk

zsohkypk1#

我希望这个重写查询将帮助您理解这个查询的作用:

var tickets = tickets.Where(x => 
        x.Issues.All(y => y.ResolutionDetails == "Resolved" 
           && y.ResolvedwithSupplierDate == null) 
        && x.Issues.Any()
    ).ToList();
fiei3ece

fiei3ece2#

您可以尝试使用这个工具-https://www.linqpad.net/。如果不设置数据,它可能不简单,但可能会有帮助。我认为更改EF核心日志级别也可能有助于查看生成的SQL。(https://learn.microsoft.com/en-us/ef/core/logging-events-diagnostics/simple-logging)这不是一个答案,只是一些建议。希望它有帮助。

qacovj5a

qacovj5a3#

它正在尝试获取票证解析不等于0且票证解析计数等于已解析计数的票证。它使用已解析为已解析标记。如果未解析,则resolvewithsupplier日期将为空
Sql应该类似于

select * from tickets where (select count(Id) from Issues where TicketId = Ticket.Id <> 0
and ((select count(Id) from Issues Where TicketId = Ticket.Id) = (select count(Id) from Issues 
Where TicketId and Ticket.Id = 'Resolved' and ResolvedwithSupplierDate is null)))

相关问题