gpt4 book ai didi

c# - 根据另一个集合过滤一个集合

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:13:05 30 4
gpt4 key购买 nike

我有一个 List<businessobject>对象集合和 List<string>对象集合。我想过滤我的 List<businessobject>因此,如果业务对象中的某个属性等于 List<string>它将被过滤掉。我可以想到用这种方式编写代码,但是有没有更快或更好的方法?

List<businessobject> bo = loadBusinessObjectList();
List<string> stringList = loadStringList();
foreach(businessobject busobj in bo){
if(stringList.contains(busobj.myProperty))
bo.remove(busobj)
}

最佳答案

您的原始代码实际上将不起作用,因为您修改了您正在枚举的列表。

你可以这样做:

List<businessobject> bo = loadBusinessObjectList();
List<string> stringList = loadStringList();

var matches = (from b in bo where stringList.Contains(b.SomeProperty) select b);
var bo = bo.Intersect(matches);

如果你修改

List<string> stringList

成为

HashSet<string> stringList

性能会得到改善,尤其是在字符串数量很大的情况下,因为列表成员资格的测试是 O(n),而哈希集成员资格的测试方法是 O(1)。

关于c# - 根据另一个集合过滤一个集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11833774/

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