当前位置:  开发笔记 > 编程语言 > 正文

如果它们存在于另一个列表中,如何更新List <Objects>中的所有重复项?

如何解决《如果它们存在于另一个列表中,如何更新List<Objects>中的所有重复项?》经验,为你挑选了1个好方法。

我试图更新对象列表中的所有重复项,如果它们存在于另一个集合中.

这是我的代码:

public class Cars
{
    public string brand { get; set; }
    public string model { get; set; }
    public string allowed { get; set; }
}

var notAllowedModels = GetNotAllowedModels(); // returns a List with model names

foreach(var car in cars) // cars is a List
{
    if (notAllowedModels.Contains(car.model))
       cars[cars.FindIndex(x => x.model == car.model)].allowed = "No";
    else
       cars[cars.FindIndex(x => x.model == car.model)].allowed = "Yes";
}

如果列表中的模型是唯一的,那么它可以正常工作,但如果它们存在多次,那么只会更新第一个,而其他的将为空.

任何人都可以想到一种方法来更新notAllowedModels列表中存在的所有重复项吗?

我知道我可以使用FindAll而不是FindIndex但它返回一个列表,我不确定它是如何帮助我的,因为它将与重复的问题相同.



1> Tim Schmelte..:

你不需要List.FindIndex用来找到汽车,你已经拥有它:

foreach(Car car in cars) // cars is a List
{
    if (notAllowedModels.Contains(car.model))
       car.allowed = "No";
    else
       car.allowed = "Yes";
}

顺便说一句,如果你想提高业绩回报HashSetGetNotAllowedModels.它只包含唯一值,并且在lookups(Contains)中非常有效.

推荐阅读
贴进你的心聆听你的世界
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有