C# 如何编写以下分组依据和剥离时间Linq查询?

C# 如何编写以下分组依据和剥离时间Linq查询?,c#,datetime,linq-to-entities,group-by,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:

我有这样的清单-

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

似乎您希望在日期id上分组,因此您希望将它们拉到一个可以分组的结构中。只有在创建此键结构时,才能使用date属性设置日期格式以正确创建分组:

from item in list
group item by new { item.Id, Date = item.Date.Date } into g
select g

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

试试这样的方法:

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);
}

I get
指定的类型成员'Date'在LINQ to Entities中不受支持
异常我可以绕过此问题吗?“我试图在一个问题中做到这一切?”用词不当。啊,林克,突然之间,。你为什么不从一开始就这么说呢?@Misnomer,你可以在分组前将
aseneumerable
添加到你的“查询”中,将记录强制存入内存。比如
yourList.AsEnumerable().GroupBy….