如何复制列表中的对象并更新重复对象的属性?

时间:2010-06-06 14:03:44

标签: c# .net

复制放置在项目列表中的对象并更改重复对象的属性的最佳方法是什么?

我想以下列方式继续: - 通过“ref”+“article”获取列表中的对象 - 根据需要多次克隆找到的对象(n次) - 删除找到的对象 - 在列表中添加克隆

您怎么看?

一个具体的例子:

Private List<Product> listProduct;
listProduct= new List<Product>();

Product objProduit_1 = new Produit;

objProduct_1.ref = "001";
objProduct_1.article = "G900";
objProduct_1.quantity = 30;

listProducts.Add(objProduct_1);

ProductobjProduit_2 = new Product;

objProduct_2.ref = "002";
objProduct_2.article = "G900";
objProduct_2.quantity = 35;

listProduits.Add(objProduct_2);

理想的方法:

public void updateProductsList(List<Product> paramListProducts,Produit  objProductToUpdate, int32 nbrDuplication, int32 newQuantity){       
...      
}

调用方法示例:

 updateProductsList(listProducts,objProduct_1,2,15);

等待结果:

替换关注对象:

ref = "001";
article = "G900";
quantite = 30;

人:

ref = "001";
article = "G900";
quantite = 15;

ref = "001";
article = "G900";
quantite = 15;

算法是否正确?您是否了解方法实现“updateProductsList”

提前感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

首先,您希望实现自己的ProductList对象。在扩展List<Product>时,实施很简单。其次,要更新产品,您可以删除旧产品,将其克隆两次并添加两次。

public class ProductList : List<Product> {
    public void update(Product product, int nrOfDuplications, int newQuantity) {
       Remove(product);
       for(int i = 0; i < nrOfDuplications; i++) {
           Add(new Product() {
               ref = product.ref,
               article = product.article,
               quantity = newQuantity
           });
       }
    }
}

使用copy constructor可以进一步改善这一点,这意味着您不需要所有部分的完整列表。