如何编写以下组并剥离时间Linq查询?

时间:2011-02-28 17:13:57

标签: c# datetime linq-to-entities group-by

我有这样的清单 -

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中实现上述结果?

2 个答案:

答案 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

此时,返回的分组中的键将为您提供所需的列表。