例如,我有3个列表(或更多):
列表1:
[{商店:“商店1”,项目:“项目1”,价格:10},{商店:“商店1”,项目:“项目2”,价格:5},{商店:“商店1”,项目:“ item4“,价格:100},{商店:” store1“,项目:” item10“,价格:10}]
列表2:
[{store:“ store2”,item:“ item1”,价格:15},{store:“ store2”,item:“ item2”,价格:10},{store:“ store2”,item:“ item10“,价格:110}]
列表3:
[{store:“ store3”,item:“ item1”,价格:5},{store:“ store3”,item:“ item2”,价格:10},{store:“ store3”,item:“ item10“,price:100},{store:” store3“,item:” item100“,price:1}]
您可以看到这就像3家商店,它们的商品和价格不同。并非所有商店都有所有商品,因此我想通过比较列表并查找包含“ item1”的对象来创建一个列表,然后选择更便宜的价格。并且还要将列表一一比较(列表1与列表2,列表1与列表3,列表2与1以及列表2与3)。我有道理吗?
任何答案都值得赞赏。
我已经尝试了一些方法,但我还是听不懂(及其2家商店):
var result = (from l1 in store1list join l2 in store2list on l1.Symbol equals l2.Symbol orderby l1.Symbol select new
{
store = l1.store,
price = l1.price,
item = l1.item
}).ToList();
答案 0 :(得分:2)
您可以先合并列表,然后再组合GroupBy项目,然后选择按价格对每个组进行排序并从每个组中获取第一个(最便宜的)。
var result = List1.Concat(List2).Concat(List3).GroupBy(x => x.item)
.Select(g => g.OrderBy(x=> x.price).First()).ToList();