我有一个类对象的C#列表:
{
{ id=1, date=04-07-2014 }
{ id=1, date=05-07-2015 }
{ id=2, date=05-05-2014 }
{ id=3, date=12-06-2014 }
{ id=4, date=12-07-2014 }
{ id=2, date=11-07-2014 }
}
如何查找列表中属于7月份的每个不同的ID的计数。日期存储为' dd-MM-yyyy'。
答案 0 :(得分:2)
您需要先使用date.Month
对您的记录进行分组,然后根据Ids
对每个组进行分组,然后在字典中选择每个Id
及其计数:
var query = list.GroupBy(r => r.date.Month)
.Select(grp => new
{
Month = grp.Key,
IdsCount = grp.GroupBy(r => r.id)
.ToDictionary(subGroup => subGroup.Key,
subGroup => subGroup.Count()),
});
如果您的日期是字符串格式"yyyy-dd-MMTHH:mm:ss"
,则分组如下:
list.GroupBy(r => DateTime.ParseExact(r.date, "yyyy-dd-MMTHH:mm:ss", CultureInfo.InvariantCulture).Month)
编辑:
要获取这些值:
foreach (var month in query)
{
Console.WriteLine("For the month of: {0}", CultureInfo.CurrentCulture.DateTimeFormat.GetMonthName(month.Month));
foreach (var id in month.IdsCount)
{
Console.WriteLine("ID: {0} , Count: {1}", id.Key, id.Value);
}
}