Найти недостающий элемент в списке сгруппированных - PullRequest
0 голосов
/ 29 мая 2019

У меня есть список объектов dailySchedule со свойствами Order, District и другими свойствами.

public class dailySchedule
{
        public int Order { get; set; }
        public string Title { get;  }
        public string District { get;  }
        ....
}

список загружается с этими значениями

enter image description here

В каждом округе должно быть 6 заказов,

var ordersValue = new List<int> {1, 2, 3, 4, 5, 6};

Я хочу найти для каждого района, какой порядок отсутствует.

Результат должен быть порядок округа 0 {2,3,5,6} порядок округа 12 {5,6}

Как это сделать с помощью linq c #?

Ответы [ 2 ]

3 голосов
/ 29 мая 2019

Это случай для Except():

Вы можете достичь желаемого результата, "вычитая два списка" примерно так:

var required = new List<int>() {1, 2, 3, 4, 5, 6};

var groupedByDistrict = orders.GroupBy(x => x.District);
foreach (var group in groupedByDistrict)
{
    var missing = required.Except(group.Select(x => x.Order).Distinct());

    // Do something with that informaton here
}

Это просто неработающий псевдокод, позволяющий вам выбрать правильный путь. На самом деле это может сработать, но я его не проверял.

1 голос
/ 29 мая 2019

Попробуйте приведенный ниже код, который даст вам результат с каждым районом и его отсутствующими заказами

        var allOrders = new List<int>() { 1, 2, 3, 4, 5, 6 };
        var result = orders.GroupBy(gp => gp.District).Select(sl =>
            new { District = sl.Key, Order = allOrders.Where(wh => sl.All(all => all.Order != wh)) });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...