我試圖通過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中可能無法正常工作。 –