gpt4 book ai didi

C# Generic List 更新项

转载 作者:太空宇宙 更新时间:2023-11-03 20:53:15 24 4
gpt4 key购买 nike

我正在使用 List<T>我需要更新列表中的对象属性。

最有效/更快的方法是什么?我知道扫描 List<T> 的索引随着此列表的增长和 List<T> 会变慢不是最有效的更新集合。

那可悲,最好是:

  • 删除匹配对象然后添加一个新对象?
  • 扫描列表索引直到找到匹配的对象,然后更新对象的属性?
  • 如果我有一个集合,让我们使用 IEnumerable,我想将该 IEnumerable 更新到列表中,最好的方法是什么。

stub 代码示例:

public class Product
{
public int ProductId { get; set; }
public string ProductName { get; set; }
public string Category { get; set; }
}

public class ProductRepository
{
List<Product> product = Product.GetProduct();
public void UpdateProducts(IEnumerable<Product> updatedProduct)
{
}
public void UpdateProduct(Product updatedProduct)
{
}
}

最佳答案

如果您想要快速查找,您可以考虑使用字典而不是列表。在您的情况下,它将是产品 ID(我假设它是唯一的)。 Dictionary MSDN

例如:

public class ProductRepository
{
Dictionary<int, Product> products = Product.GetProduct();
public void UpdateProducts(IEnumerable<Product> updatedProducts)
{
foreach(var productToUpdate in updatedProducts)
{
UpdateProduct(productToUpdate);
}

///update code here...
}
public void UpdateProduct(Product productToUpdate)
{
// get the product with ID 1234
if(products.ContainsKey(productToUpdate.ProductId))
{
var product = products[productToUpdate.ProductId];
///update code here...
product.ProductName = productToUpdate.ProductName;
}
else
{
//add code or throw exception if you want here.
products.Add(productToUpdate.ProductId, productToUpdate);
}
}
}

关于C# Generic List<T> 更新项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53170854/

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