Сканирование списков объектов и сравнение значений объектов - PullRequest
0 голосов
/ 10 ноября 2018

Например, у меня есть 3 списка (или больше):

List1:

[{магазин: "store1", пункт: "item1", цена: 10}, {магазин: "store1", пункт: "item2", цена: 5}, {магазин: "store1", пункт:» item4" , цена: 100}, {магазин: "store1", пункт: "item10", цена: 10}]

List2:

[{магазин: "store2", пункт: "item1", цена: 15}, {магазин: "store2", пункт: "item2", цена: 10}, {магазин: "store2", пункт:» item10" , цена: 110}]

List3:

[{магазин: "store3", пункт: "item1", цена: 5}, {магазин: "store3", пункт: "item2", цена: 10}, {магазин: "store3", пункт:» item10" , цена: 100}, {магазин: "store3", пункт: "item100", цена: 1}]

Как видите, это 3 магазина с разными товарами и ценами. Не во всех магазинах есть все товары, поэтому я хотел бы составить список, сравнив списки и найдя, например, объекты, содержащие «item1», а затем выбрав более дешевую цену. А также сравнить списки 1 по одному (список 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();

1 Ответ

0 голосов
/ 10 ноября 2018

Вы можете объединить свои списки, а затем элемент GroupBy и выбрать заказ каждой группы по цене и выбор первой (самой дешевой) из каждой группы.

var result = List1.Concat(List2).Concat(List3).GroupBy(x => x.item)
     .Select(g => g.OrderBy(x=> x.price).First()).ToList();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...