gpt4 book ai didi

c# - 将 SQL 转换为 EF Linq

转载 作者:行者123 更新时间:2023-11-30 19:56:26 25 4
gpt4 key购买 nike

我有以下查询:

SELECT COUNT(1)
FROM Warehouse.WorkItems wi
WHERE wi.TaskId = (SELECT TaskId
FROM Warehouse.WorkItems
WHERE WorkItemId = @WorkItemId)
AND wi.IsComplete = 0;

因为我们使用的是 EF,所以我希望能够使用 Linq 功能来生成此查询。 (我知道我可以给它一个像这样的字符串查询,但出于重构的原因,我想使用 EF+Linq 为我生成查询。)

我真的不需要知道查询的结果。我只需要知道是否有任何结果。 (使用 Any() 会很完美,但我无法获得它的写入代码。)

那么...基本上,我该如何将该 SQL 查询编写为 LINQ 查询?

编辑:表结构

WorkItemId - int - Primary Key
TaskId - int - Foreign Key on Warehouse.Tasks
IsComplete - bool
JobId - int
UserName - string
ReportName - string
ReportCriteria - string
ReportId - int - Foreign Key on Warehouse.Reports
CreatedTime - DateTime

最佳答案

直接翻译可能是这样的

var result = db.WorkItems.Any(wi =>
!wi.IsComplete && wi.TaskId == db.WorkItems
.Where(x => x.WorkItemId == workItemId)
.Select(x => x.TaskId)
.FirstOrDefault()));

考虑到 SQL =(subquery), IN (subquery)EXISTS(subquery) 在现代数据库中是处理相同,你可以试试这个

var result = db.WorkItems.Any(wi =>
!wi.IsComplete && db.WorkItems.Any(x => x.WorkItemId == workItemId
&& x.TaskId == wi.TaskId));

关于c# - 将 SQL 转换为 EF Linq,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33900103/

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