linq 如何用另一个新创建的对象替换List中的对象c# [已关闭]

jm2pwxwz  于 2023-03-10  发布在  C#
关注(0)|答案(1)|浏览(139)

已关闭。此问题需要details or clarity。当前不接受答案。
**想要改进此问题?**添加详细信息并通过editing this post阐明问题。

2天前关闭。
Improve this question
如何用Linq新创建的对象替换List中的一个对象?我有下面的伪场景。类结构不能以任何方式改变。
Customer.cs

public class Customer
{
    public string Name { get; set; }
    public List<Shop> Shops{ get; set; }
}

Shop.cs

public class Shop
{
    public string Id{ get; set; }
    public string Name { get; set; }
    public List<Item> Basket{ get; set; }
}

item.cs

public class Item
{
    public string Id{ get; set; }
    public string Name { get; set; }
    public decimal Price { get; set; }
}

我有一个完全填充的客户,该客户有多个商店,每个商店购物篮中有多个项目。我想用此新创建的项目(如下所示的newItem)替换项目(例如,ID = 3的商店中ID = 1的项目)。如何解决此问题?注:商店中要替换的物品的ID没有硬编码,将作为参数传递。

var newItem = new Item()
{
   Id= 1,
   Name = "New Name",
   Price = 10
};
yeotifhr

yeotifhr1#

你可以试试这个;

var shopIdToReplace = 3;
    var itemToReplace = 1;
    

    var targetShop = newCustomer.Shops.FirstOrDefault(x => x.Id == shopIdToReplace);
        if(targetShop != null)
        {
            int index = targetShop.Basket.FindIndex(item => item.Id == itemToReplace);
            if (index >= 0)
            {
                targetShop.Basket[index] = newItem;
                Console.WriteLine(newCustomer);
            }
        }

相关问题