C# 如何从依赖于lamba表达式中另一个列表的列表中删除

C# 如何从依赖于lamba表达式中另一个列表的列表中删除,c#,lambda,C#,Lambda,现在我有一个列表a和列表b ListA将有类型为customTypeA的对象列表,ListB将有类型为customTypeB的对象列表 customTypeA将有两个字段AiD和BiD customTypeB是ICollection,它将有两个字段BiD和Status 如果列表B中的项具有状态==2,并且两个项具有相同的出价,我可以知道如何构造一个lambda表达式来删除列表a中的项 类似如下: foreach(var item in ListB) { if (item.Status =

现在我有一个列表a列表b

ListA将有类型为customTypeA的对象列表
ListB将有类型为customTypeB的对象列表

customTypeA将有两个字段AiDBiD
customTypeB
ICollection
,它将有两个字段BiDStatus

如果列表B中的
具有状态==2,并且两个
具有相同的出价,我可以知道如何构造一个lambda表达式来删除列表a中的

类似如下:

foreach(var item in ListB)
{
    if (item.Status == 2)
    {
        ListA.RemoveAll(x=>x.BiD == item.BiD);
    }
}

一种不涉及创建新列表的简单方法是:

ListA.RemoveAll(a => ListB.Any(b => a.BiD == b.BiD && b.Status == 2));

换句话说,这意味着您删除了
ListA
的一个元素,如果
ListB
中有一个元素具有相同的
BiD
,并且
状态等于2。

很抱歉缺少信息。我的
ListB
是ICollection,因此不存在用于it@Mr.SuicideSheep没问题,只需使用
Any
LINQ方法即可。