我有这样的清单 -
Id Date
1 01/03/2011 14:15:23.320
1 01/03/2011 16:15:23.320
1 01/03/2011 18:15:23.320
1 01/04/2011 19:15:23.320
2 01/03/2011 14:15:23.320
2 01/03/2011 15:15:23.320
2 01/03/2011 18:15:23.320
2 01/05/2011 19:15:23.320
2 01/07/2011 20:15:23.320
我想要的输出是 -
Id Date
1 01/03/2011
1 01/04/2011
2 01/03/2011
2 01/05/2011
2 01/07/2011
那么如何在id的第一个列表上进行分组并仅获取日期部分并在Linq中实现上述结果?
答案 0 :(得分:6)
尝试这样的事情:
var result = yourList.GroupBy(item =>
new {Id = item.Id, Date = item.Date.Date});
基本上,DateTime.Date
会删除时间信息。
要遍历结果,您可以执行以下操作:
foreach(var grp in result)
{
Console.WriteLine("{0}: {1}", grp.Key.Id, grp.Key.Date);
}
答案 1 :(得分:2)
您似乎希望对日期和 ID进行分组,因此您希望将这些内容分组到可以分组的结构中。当您创建此密钥结构时,您可以使用Date属性格式化日期以正确创建分组:
from item in list
group item by new { item.Id, Date = item.Date.Date } into g
select g
此时,返回的分组中的键将为您提供所需的列表。