gpt4 book ai didi

c# - 以最快的方式从有条件的列表中删除

转载 作者:太空宇宙 更新时间:2023-11-03 18:22:39 24 4
gpt4 key购买 nike

是否有其他方法可以从列表中删除对象而不是我用 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com