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;