【问题标题】:Filter List of parent objects where List of child objects does not meet criteria过滤子对象列表不符合条件的父对象列表
【发布时间】:2021-02-22 18:52:10
【问题描述】:

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

class Task
{
    public int IdTask 
    public string Task
    public List<User> ListUser 
    public bool Deleted
}

class User
{
    public int IdUser 
    public string Task
}

然后是一大堆任务List&lt;Task&gt;

现在,我想查找List&lt;Task&gt; 的过滤列表,其中ListUser 中的所有用户都没有特定的IdUser(例如99)。

目前我用嵌套循环来做。像这样的:

foreach (var item in tasks)
{
    var access = false;
    foreach (var t in item.ListUser)
    {
        if(t.IdUser == 99)
        {
            access = true;
        }
    }
    item.Deleted = access;
}
tasks.RemoveAll(x => x.Deleted);

虽然上述方法有效,但似乎有点矫枉过正。我可以使用 lambda 表达式(或 linq)完成相同的操作吗?

【问题讨论】:

    标签: c# linq lambda


    【解决方案1】:

    您可以使用此代码:

    var newList = list.Where(e => !e.ListUser.Any(l => l.IdUser == 99));
    

    实际上是“创建一个新列表,其中包含除用户列表包含用户 99 的项目之外的所有项目”。

    【讨论】:

      【解决方案2】:

      你可以使用下面的代码

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

      【讨论】:

        猜你喜欢
        • 2017-06-14
        • 2017-09-24
        • 2011-09-07
        • 1970-01-01
        • 2022-01-12
        • 1970-01-01
        • 2015-03-24
        • 1970-01-01
        相关资源
        最近更新 更多