在c#中处理两个对象列表

时间:2014-04-15 10:44:24

标签: c#

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

我需要根据ID将listA集合与listB集合进行匹配,如果匹配则更新状态从ListB到ListA。

没有foreach循环的最佳方法是什么?

感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

您可以使用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语句,则无法实现此目的。

答案 1 :(得分:0)

我有类似的情况。我有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