我有两个列表,都包含如下所示的对象:(这是一个简化)
class ddItem
{
public string Code;
public string Key;
public string ParentKey;
}
一个列表包含在另一个列表中可能包含或不包含子项的项目。 我试图找出一种很好的方法来删除父列表中的项目,如果它们在子列表中有相应的项目,即parent.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();
(我也不得不移动演员)
[/编辑]
答案 0 :(得分:5)
我认为您只需要在select
any
更改为where
parentList.Where(p => childtList.Any(c => c.ParentKey == p.Key))