在c#中操作两个对象列表
本文关键字:两个 对象 列表 操作 | 更新日期: 2023-09-27 17:58:34
我有一个objectA,它有一个ID属性和一个Status属性。我有一个ListA,它是objectA的集合。我还有一个对象B,它有一个ID属性和一个Status属性。我有一个ListB,它是objectB的集合。
我需要根据ID将listA集合与listB集合匹配,如果匹配,请将Status从listB更新为listA。
在没有foreach循环的情况下,最好的方法是什么?
谢谢你的帮助。
您可以使用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
语句,就无法实现这一点。
我也有类似的场景。我有cartProducts
和productsPurchasePrices
。
我使用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