LINQ для извлечения дубликатов данных более 3 - PullRequest
0 голосов
/ 29 сентября 2018
class Year
{
    public int YearNumber;
    public List<Month> Months = new List<Month>();
}

class Month
{
    public int MonthNumber;
    public List<Day> Days = new List<Day>();
}

class Day
{
    public int DayNumber;
    public string Event;
}

Итак, у меня есть список лет (list<year> years).Как получить список (еще один список), в результате которого в тот же день произошло событие-дубликат?Я имею в виду, что события могут происходить в несколько дат, не имеет значения, что важно, чтобы выяснить, происходит ли эта дата одно и то же событие из другого года.,Наконец, (фильтр), только если это происходит более 3 раз.Например, 5 июля 2014 года, 5 июля 2017 года и 5 июля 2019 года - «Abc Festival», который проводится более 3 раз.Итак, вы получите дату, событие и количество отсчетов.

1 Ответ

0 голосов
/ 29 сентября 2018

Используя только те классы, которые вы показываете, мы можем сгруппировать только даты, где «дата» - это день в месяце:

var query = from y in years
            from m in y.Months
            from d in m.Days
            select new { m.MonthNumber, d.DayNumber }
            into date
            group date by date
            into dateGroup
            where dateGroup.Count() > 2
            select dateGroup;
            select dateGroup;

Как видите, основное решение заключается в создании new { m.MonthNumber, d.DayNumber } объектови сгруппировать их.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...