在使用List的Remove()方法时,需要注意,集合中的对象和参数对象就算是属性一致也不能进行Contains()判定;
今天就遇到了这样一个问题:
原代码:
foreach (var k in tdptstafflist){
if (tdptstafflist2.Contains(k))
{
tdptstafflist2.Remove(k);
}
}
调试的时候if条件怎办都判定不了;
之后才了解到list中对象判定的机制;
故采取了如下解决方法:
foreach (var k in tdptstafflist)
{
var f = tdptstafflist2.Where(p=>p.UserName==k.UserName).FirstOrDefault();
if (f!=null)
{
tdptstafflist2.Remove(f);
}
}
勉强解决问题;
如有其他的好方法请在评论区分享,谢谢!