我正在使用 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/