修改列表并与之前的值进行比较

时间:2017-07-11 13:24:06

标签: c# list

我有一个大小不固定的列表。在每次迭代中,列表中的元素数量可能会减少,增加或保持相同但具有不同的值。

在每次迭代中,我在setter中收到如下新的列表:

public List<int> IconsColor
{
    get { return iconsColorList; }
    set
    {             
        newIconsColorList = new List<int>(value);

        if (newIconsColorList.Count == iconsColorList.Count && newIconsColorList.All(iconsColorList.Contains))
            return;

        //Else
        nIconsChanged = true;

       //??????????????????????????
       //?????????- How do I update Old list with New values
       //Something like iconsColorList = newIconsColorList;
       //but above line makes the If-condition true since both the lists are same now                                             
    }
}

如何使用新值(存在于iconsColorList中)修改上一个列表(newIconsColorList)的元素?如果新列表中的元素数量大于旧列表中的元素数量,那么也将新元素添加到旧列表中。

1 个答案:

答案 0 :(得分:0)

所以你想要合并两个列表(更新和添加新的):

public List<int> IconsColor
{
    set
    {
        for (int i = 0; i < Math.Min(iconsColorList.Count, value.Count); i++)
        {
            if (value[i] != iconsColorList[i])
            {
                iconsColorList[i] = value[i];
                nIconsChanged = true;
            }
        }

        if (value.Count > iconsColorList.Count)
        {
            // append new items to the end of the list
            iconsColorList.AddRange(value.Skip(iconsColorList.Count));
            nIconsChanged = true;
        }
    }
}

旁注:我希望缺少吸气剂只是因为它不相关。没有吸气剂的房产不是很有用,闻起来像鱼。在这种情况下,它只是return iconsColorList;