gpt4 book ai didi

c# - LINQ 查找所有子实体满足要求

转载 作者:太空宇宙 更新时间:2023-11-03 19:04:55 24 4
gpt4 key购买 nike

我有一个请求表和一个任务表。 Request to Task 是一对多的关系。在请求中有一个状态。任务中也有一个状态。有时人们将所有任务状态标记为完成但不将请求的状态标记为完成。我需要对其进行一些维护工作。这是我的代码:

List<Request> RequestsNeedsAction = new List<Request>();
var requests = Requests.Where(r => r.RequestStatusID == 2 ||
r.RequestStatusID == 6)
.ToList();

foreach (var request in requests)
{
bool taskAllCompleted = true;
foreach (var task in request.Tasks)
{
if (task.TaskStatusID != 2 && task.TaskStatusID != 5)
{
taskAllCompleted = false;
break;
}
}
if ( taskAllCompleted )
{
RequestsNeedsAction.Add( request );
}
}

RequestsNeedsAction.Dump();

在 LINQ 或 tsql 中是否有更简单的方法来执行此操作?

最佳答案

你可以尝试这样的事情:

var RequestsNeedsAction = Requests.Where(r => 
(r.RequestStatusID == 2 || r.RequestStatusID == 6)
&& !r.Tasks.Any( t => t.TaskStatusID != 2 && t.TaskStatusID != 5)).ToList();

关于c# - LINQ 查找所有子实体满足要求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29683499/

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