我有两种不同类型的列表
class A
{
int number;
string name;
}
class B
{
int number;
}
List<A> a1;
List<B> b1;
现在两个列表都已填充,现在我想删除列表a1中的项目(编号),如果该项目(编号)不存在于列表b1.tried下面的方法
a1.removeall(a=>b1.Exists(b1.number!=a1.number);
但结果并不像预期的那样。请帮帮我......
答案 0 :(得分:2)
我想你想要这个:
a1.RemoveAll(a=> !b1.Any(b=> b.number == a.number));
请注意,这是O(n ^ 2)。更高效的方法是使用HashSet<int>
(对于小型列表可能无关紧要,但对于较大的列表却要注意这一点):
HashSet<int> bNums = new HashSet<int>(b1.Select(b => b.number));
a1.RemoveAll(a => !bNums.Contains(a.number));