using System;
using System.Linq;
namespace ConsoleApplication1
{
class Program
{
public class S
{
public int Year;
public int Month;
public int Day;
}
static void Main(string[] args)
{
var m = new []{
new S{Year = 2000, Month = 1, Day = 10},
new S{Year = 2000, Month = 2, Day = 10},
new S{Year = 2010, Month = 1, Day = 1},
new S{Year = 2010, Month = 2, Day = 1},
new S{Year = 2010, Month = 1, Day = 2},
new S{Year = 2010, Month = 2, Day = 2},
new S{Year = 2000, Month = 1, Day = 2},
new S{Year = 2000, Month = 2, Day = 2},
};
var q2 =
from s in m
group s by s.Year into YearGroup
select new
{
Year = YearGroup.Key,
MonthGroups =
from s2 in YearGroup
group s2 by s2.Month into MonthGroup
select new
{
Month = MonthGroup.Key,
Days =
from s3 in MonthGroup
orderby s3.Day
select s3.Day
}
};
var q = m.GroupBy(
s => s.Year,
(Year, YearGroup) => new
{
Year,
MonthGroups =
YearGroup.GroupBy(
s2 => s2.Month,
(Month, MonthGroup) => new
{
Month,
Days = MonthGroup.OrderBy(s3 => s3.Day).Select(s3 => s3.Day)
}
)
}
);
foreach (var elem in q)
//foreach (var elem in q2)
{
Console.WriteLine("Year = {0}", elem.Year);
foreach (var elem2 in elem.MonthGroups)
{
Console.WriteLine("\tMonth = {0}", elem2.Month);
foreach (var day in elem2.Days)
Console.WriteLine("\t\tDay = {0}", day);
}
}
}
}
}
//Year = 2000
// Month = 1
// Day = 2
// Day = 10
// Month = 2
// Day = 2
// Day = 10
//Year = 2010
// Month = 1
// Day = 1
// Day = 2
// Month = 2
// Day = 1
// Day = 2
标签:
LINQ
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!