C# 筛选子对象列表不符合条件的父对象列表

C# 筛选子对象列表不符合条件的父对象列表,c#,linq,lambda,C#,Linq,Lambda,假设我们有两个类(父类和子类): 类任务 { 公共int IdTask 公共字符串任务 公共列表列表用户 删除公共文件 } 类用户 { 公共int IdUser 公共字符串任务 } 然后是一个大的任务列表list 现在,我想找到一个过滤后的list列表,其中ListUser中的所有用户都没有特定的IdUser(例如99) 目前,我使用嵌套循环来执行此操作。Smth是这样的: foreach(任务中的变量项) { var-access=false; foreach(item.ListUser中的

假设我们有两个类(父类和子类):

类任务
{
公共int IdTask
公共字符串任务
公共列表列表用户
删除公共文件
}
类用户
{
公共int IdUser
公共字符串任务
}
然后是一个大的任务列表
list

现在,我想找到一个过滤后的
list
列表,其中
ListUser
中的所有用户都没有特定的
IdUser
(例如99)

目前,我使用嵌套循环来执行此操作。Smth是这样的:

foreach(任务中的变量项)
{
var-access=false;
foreach(item.ListUser中的var t)
{
if(t.IdUser==99)
{
访问=真;
}
}
item.Deleted=访问权限;
}
tasks.RemoveAll(x=>x.Deleted);
尽管上述方法有效,但似乎有些过头了。我可以用lambda表达式(或linq)完成同样的操作吗?

您可以使用以下代码:

var newList = list.Where(e => !e.ListUser.Any(l => l.IdUser == 99));
实际上,它说,“创建一个包含所有项目的新列表,除了那些包含用户99的用户列表的项目。”

您可以使用下面的代码

IEnumerable<Task> result=tasks.Where(task=> task.ListUser.Any(user=>user.IdUser == XXX))
IEnumerable result=tasks.Where(task=>task.ListUser.Any(user=>user.IdUser==XXX))