在c#中操作两个对象列表

本文关键字:两个 对象 列表 操作 | 更新日期: 2023-09-27 17:58:34

我有一个objectA,它有一个ID属性和一个Status属性。我有一个ListA,它是objectA的集合。我还有一个对象B,它有一个ID属性和一个Status属性。我有一个ListB,它是objectB的集合。

我需要根据ID将listA集合与listB集合匹配,如果匹配,请将Status从listB更新为listA。

在没有foreach循环的情况下,最好的方法是什么?

谢谢你的帮助。

在c#中操作两个对象列表

您可以使用LINQ进行以下操作:

var objectsForUpdate = (from a in listA
                        join b in listB
                          on a.Id equals b.Id
                        select new { a, b });
foreach (var obj in objectsForUpdate)
{
    obj.a.Status = obj.b.Status;
}

注意如果不使用foreach语句,就无法实现这一点。

我也有类似的场景。我有cartProductsproductsPurchasePrices

我使用linq来加入两个集合:

//join currentCart...
var p = currentCart.Rows.Join(
        productsPurchasePrices,              //... with productsPurchasePrices
        row => row.ProductCode,              //first collection key
        purchasePrice => purchasePrice.Key,  //second collection key
        (row, purchasePrice) => new
        {
            productCode = row.ProductCode,
            productMargin = purchasePrice.ProductMargin
        });

参考文献:

http://msdn.microsoft.com/en-us/library/bb397941.aspx

http://code.msdn.microsoft.com/LINQ-Join-Operators-dabef4e9