首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >更新匹配的对象值

更新匹配的对象值
EN

Stack Overflow用户
提问于 2018-08-25 04:19:33
回答 1查看 32关注 0票数 0

检查下面的代码。我有一些数据的oldPricenewPrice变量。然后,我将它们加到一个名为- allItems的列表中。现在,您将注意到变量oldPricenewPrice具有ASIN属性,这是每个数据集的标识。现在我的目标是-在allItems变量中,我希望匹配ASIN值数据的price应该被更新。ASIN = “one”, ASIN = “two”newPriceoldPrice中都很常见,所以从newPriceoldPrice都应该在one and two中更新。我怎么能这么做?

代码语言:javascript
复制
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ASIN_REFRESH_2
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Test App");

            //old price has 4 values
            var oldPrice = new List<ThirdPartyData>();
            oldPrice.Add(new ThirdPartyData { ASIN = "one", price = 5, IsPrime = true });
            oldPrice.Add(new ThirdPartyData { ASIN = "two", price = 6, IsPrime = true });
            oldPrice.Add(new ThirdPartyData { ASIN = "three", price = 7, IsPrime = false });
            oldPrice.Add(new ThirdPartyData { ASIN = "four", price = 8, IsPrime = false });

            //new price has 2 values
            var newPrices = new List<ThirdPartyData>();
            newPrices.Add(new ThirdPartyData { ASIN = "one", price = 1, IsPrime = false });
            newPrices.Add(new ThirdPartyData { ASIN = "two", price = 2, IsPrime = true });

            var allItems = new List<ThirdPartyData>();//here old price and new price added in single list
            allItems.AddRange(newPrices);
            allItems.AddRange(oldPrice);

            Console.ReadKey();
        }
    }

    class ThirdPartyData
    {
        public string ASIN { get; set; }
        public int price { get; set; }
        public bool IsPrime { get; set; }
    }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-08-25 04:32:24

您的请求还不清楚(至少对我来说是这样),但下面是您如何开始根据另一个列表更新列表的方法:

代码语言:javascript
复制
oldPriceMap = oldPrice.ToDictionary(p => p.ASIN, p => p);
foreach (var item in allItems) {
    if (oldPriceMap.Cotains(item.ASIN)) {
        // change something on current item
        item.price = oldPrice.price;
    }
}

为什么是地图?您的示例有非常小的列表,但是如果旧列表相当大(数千项)怎么办?您必须查找匹配项,这将在常规列表中获取O(n)。该映射有助于将其简化为O(1)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52014010

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档