List LINQ提取重复数据超过3个 学年 { 公众号; 公共列表月份=新列表(); } 班级月份 { 公共国际月号; 公共列表天数=新列表(); } 上课日 { 公共整数日数; 公共字符串事件; }

List LINQ提取重复数据超过3个 学年 { 公众号; 公共列表月份=新列表(); } 班级月份 { 公共国际月号; 公共列表天数=新列表(); } 上课日 { 公共整数日数; 公共字符串事件; },list,linq,nested,List,Linq,Nested,所以我有一个年份列表(列出年份)。如何获取结果与同一天的事件重复的列表(另一个列表)?我的意思是,事件可以发生在多个日期,不重要,重要的是,找出这其中任何一个日期是否发生在不同年份的同一事件。最后,(过滤)仅当其出现超过3次时。例如,2014年7月5日、2017年7月5日和2019年7月5日是“Abc节”,其发生次数超过3次。因此,您可以获得日期、事件和计数数。仅使用您显示的类,我们只能对日期进行分组,其中“日期”是一个月中的一天: class Year { public int Yea

所以我有一个年份列表(
列出年份
)。如何获取结果与同一天的事件重复的列表(另一个列表)?我的意思是,事件可以发生在多个日期,不重要,重要的是,找出这其中任何一个日期是否发生在不同年份的同一事件。最后,(过滤)仅当其出现超过3次时。例如,2014年7月5日、2017年7月5日和2019年7月5日是“Abc节”,其发生次数超过3次。因此,您可以获得日期、事件和计数数。

仅使用您显示的类,我们只能对日期进行分组,其中“日期”是一个月中的一天:

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;
}

正如您所见,核心解决方案是构建
新的{m.MonthNumber,d.DayNumber}
对象并对它们进行分组。

事件和年份是如何连接的?此外,展示你自己的努力将阐明你想要实现的目标。还有,为什么不直接使用DateTimes呢?这只是一个简单的例子,实际情况并非如此。我试过按天分组,然后按事件分组,计数超过3,第一个分组是可以的,我不知道如何在第一个分组上执行第二个分组,因为我的问题涉及嵌套列表,我需要检查列表列表中的所有元素。在lamda表达式形式中如何?方法语法中的
from-from
构造与
SelectMany
相同(
years.SelectMany(y=>y.Months)
等)。然而,查询语法的可读性要好得多。如果我是你,我就不会使用方法语法。
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;