从列表中删除父项

本文关键字:删除 列表 | 更新日期: 2023-09-27 18:32:58

我有 2 个列表,都包含如下所示的对象:(这是一个简化)

class ddItem
{
    public string Code;
    public string Key;
    public string ParentKey;
}

一个列表包含另一个列表中可能有也可能没有子项的项目。我正在尝试找出一种很好的方法,如果子列表中有相应的项目,即父项的位置,则从父列表中删除项目。Key = child.parentKey。

这是我拥有的 LINQ,它目前导致我失去脑细胞:

parentList = 
    (List<ddItem>)parentList.Where(p => childList.Select(c => c.ParentKey == p.Key));

目前我在childList.Select(c => c.ParentKey == p.Key)下面有一条红色波浪线,消息Cannot convert expression type 'System.Collections.Generic.IEnumerable<bool>' to return type 'bool'所以我一定在某个地方错过了一个演员表 - 我想......

[编辑]

对于后代,正确的代码是:

parentList = 
    parentList.Where(p => childList.Any(c => c.ParentKey == p.Key)).ToList();

(我也不得不移动演员阵容)

[/编辑]

从列表中删除父项

我认为您只需要在where中从select更改为any

parentList.Where(p => childtList.Any(c => c.ParentKey == p.Key))