我有一个班级“项目”:
public class Item
{
public int Id { get; set; }
public decimal Price { get; set; }
public override bool Equals(object obj)
{
if (obj is Item item)
return item.Id == Id;
return false;
}
// GetHashCode omitted...
}
我有两个列表需要合并:
var items1 = new List<Item>
{
new Item { Id = 1, Price = 10 },
new Item { Id = 2, Price = 10 },
new Item { Id = 3, Price = 10 },
};
var items2 = new List<Item>
{
new Item { Id = 1, Price = 10 },
new Item { Id = 2, Price = 8 },
new Item { Id = 4, Price = 10 },
};
我得到的工会是这样的:
var union = items1.Union(items2).ToList();
但我也需要一个约束条件,那就是最低价格的商品在联盟中。例如,在上面的列表中,“items2”的item.id=2必须在联合中……所以结果应该是一个包含这4个项的列表:
-
项目ID=1,价格=10
-
item id=2,price=8//不是price=10的
-
项目ID=3,价格=10
-
项目ID=4,价格=10
是否有一种优雅的方法可以在C(最好使用LINQ)中实现这一点?