我试图通过code
使用周数,所以第一组,然后weekOfYear
+ Year
。
List<MyClass> date = new List<MyClass>
{
new MyClass { Date = new DateTime(2017,03,04), Code = "1234"},
new MyClass { Date = new DateTime(2017,03,05), Code = "1234"},
new MyClass { Date = new DateTime(2017,03,06), Code = "1234"},
new MyClass { Date = new DateTime(2017,04,04), Code = "1234"},
new MyClass { Date = new DateTime(2017,04,05), Code = "1234"},
new MyClass { Date = new DateTime(2017,04,06), Code = "1234"},
new MyClass { Date = new DateTime(2017,03,06), Code = "12345"},
new MyClass { Date = new DateTime(2017,04,04), Code = "12345"},
new MyClass { Date = new DateTime(2017,04,05), Code = "12345"},
new MyClass { Date = new DateTime(2017,04,06), Code = "12345"}
};
var groupbydata = date.GroupBy(x => x.Code).ToDictionary(x => x.Key, x => x.GroupBy(y => CultureInfo.InvariantCulture.Calendar.GetWeekOfYear(y.Date, CalendarWeekRule.FirstFullWeek, DayOfWeek.Monday).ToString() + y.Date.Year.ToString()));
更新:
我已经改变了
x => x.GroupBy(y => CultureInfo.InvariantCulture.Calendar.GetWeekOfYear(y.Date, CalendarWeekRule.FirstFullWeek, DayOfWeek.Monday) + y.Date.Year));
到
x => x.GroupBy(y => CultureInfo.InvariantCulture.Calendar.GetWeekOfYear(y.Date, CalendarWeekRule.FirstFullWeek, DayOfWeek.Monday).ToString() + y.Date.Year.ToString()));
你会得到 Dictionary<string, IEnumerable<IGrouping<string, MyClass>>>
的Key
的字典是Code
和词典的Value
由Week number + Year
亦自数据尝试打印出来
private static void Print(Dictionary<string, IEnumerable<IGrouping<string, MyClass>>> groupbydata)
{
foreach (var d1 in groupbydata)
{
Debug.WriteLine("Code : " + d1.Key);
foreach (var d2 in d1.Value)
{
Debug.WriteLine("Week number + Year: " + d2.Key);
foreach (var d3 in d2)
{
Debug.WriteLine("Date : " + d3.Date);
}
}
}
}
,其结果是
代码:1234
周数+年:92017
日期:3/4/2 017 12:00:00 AM
日期:2017年3月5日12:00:00 AM
周数+年份:102017
日期:2017年3月6日12:00:00 AM
周数+年份:142017
日期:2017年4月4日12:00:00 AM
日期:2017年4月5日12:00:00 AM
日期:2017年4月6日12:00:00 AM
代码:12345
周数+年份:102017
日期:2017年3月6日12:00:00 AM
周数+年份:142017
日期:2017年4月4日12:00:00 AM
日期:2017年4月5日12:00:00 AM
日期:2017年4月6日12:00:00 AM
这是在LINQ到对象,LINQ to SQL的,EF,别的东西吗? –
@JonSkeet我对我的实际项目使用EF,这只是我面临的问题的一个粗略示例。我的基础数据全部在SQL中,并通过EF(UnitOfWork)访问。 – Toby
没错,但是这个细节真的很重要 - 例如,在LINQ to Objects中工作的解决方案在EF中可能无法正常工作。 –