是否有其他方法可以从列表中删除对象 而不是我用 foreach 所做的;
我的意思是我不认为我做的方式是最好的方式和优化的方式
像这样:
var allobj= .. //this a list of all object
var myobj= .. //this a list of my selected object
foreach (var inu in myobj.ToArray())
{
if (allobj.Where(p => p.UserName == inu.UserName).Count() != 0)
{
myobj.Remove(inu);
}
}
最佳答案
其他答案有缺点,那就是“创建不包括所选项目的新集合”而不是从实际集合中删除项目。
这种方法不会从主集合中复制,它会以最佳速度直接从列表中删除项目。
您将从所选项目生成哈希集,以便您可以以恒定速度在哈希集中查找字符串。
// generate hashset from selected items
var set = new HashSet<string>(myobj.Select(x => x.UserName));
// remove all items from list.
allobj.RemoveAll(x => set.Contains(x.UserName));
关于c# - 以最快的方式从有条件的列表中删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46756637/