【发布时间】:2015-04-18 08:56:17
【问题描述】:
假设我有这个课程:
public class Product
{
public string Id { get; set; }
public int Quantity { get; set; }
}
然后我有两个列表:
var oldList = new List<Product>(){
new Product(){
Id = "1", Quantity = 1
}
};
var newList = new List<Product>(){
new Product(){
Id = "1", Quantity = 5
}
};
如何比较这两个列表并返回 newList 中已更改的项目的单个产品对象。就像上面的代码场景一样,我想返回一个 Product-object,其值为 Id = "1", Quantity = 5
另一个场景是这样的:
var oldList = new List<Product>(){
new Product(){
Id = "1", Quantity = 1
}
};
var newList = new List<Product>(){
new Product(){
Id = "1", Quantity = 1
},
new Product(){
Id = "2", Quantity = 1
}
};
如果在newList 中添加了一个新项目,那么我想返回该项目(带有 Id="2" 的产品对象)
【问题讨论】:
-
var diffList = oldList.Where(o => !newList.Any(n => n.Id == o.Id)) .Union(newList.Where(n => !oldList.Any(o => n.Id == o.Id)));?