C# 使用linq检索不同的日期

C# 使用linq检索不同的日期,c#,C#,嗨,我在从数据库检索不同日期时遇到问题。在这个数据库中,我有几个特定日期的事件,结果显示了一个具有相同日期/“StartDate”字段的事件列表。我怎样才能找回那些不同的日子呢。我试过: ICollection result; result= client.GetEventInstances().Select(x => x.StartDate).Distinct(); 我希望看到只有一个明确的日期,只有该日期的第一个事件 然后,您需要对事件进行分组,并从每个日期中获取第一项: clien

嗨,我在从数据库检索不同日期时遇到问题。在这个数据库中,我有几个特定日期的事件,结果显示了一个具有相同日期/“StartDate”字段的事件列表。我怎样才能找回那些不同的日子呢。我试过:

ICollection result;
result= client.GetEventInstances().Select(x => x.StartDate).Distinct();
我希望看到只有一个明确的日期,只有该日期的第一个事件

然后,您需要对事件进行分组,并从每个日期中获取第一项:

client.GetEventInstances()
    .GroupBy(k => k.StartDate.Date)
    .ToDictionary(k => k.Key, v => v.First())

嗯,我设法寻找并找到了一个解决方案来满足我的需求,当然它不会适合每个人。感谢人们在这件事上给我的时间,我一直很感激

ICollection<EventInstance> result;
   result = client.GetEventInstances();

    IEnumerable<EventInstance> distinctDate = result
             .GroupBy(e => e.StartDate.Date)
             .Select(group => group.First());
i采集结果;
结果=client.GetEventInstances();
IEnumerable distinctDate=结果
.GroupBy(e=>e.StartDate.Date)
.Select(group=>group.First());

您遇到的问题是什么?数据是什么?你希望看到什么?你到底看到了什么?请你澄清一下这部分。在这个数据库中,我在任何一天都有几个事件,结果显示了一个具有相同日期的事件列表/“StartDate”字段StartDate是否包含一天中的时间信息以及日期?I收集结果;结果=client.GetEventInstances().Select(x=>x.StartDate.Date).Distinct();可能有用如果
GetEventInstances()
是类似实体框架的
IQueryable
,则此操作可能会失败。有什么建议吗@davidg您可以选择
StartDate.Year
StartDate.Month
StartDate.Day
或使用
EntityFunctions.TruncateTime
谢谢您的代码,但这会给我以下错误:无法将类型“System.Collections.Generic.Dictionary”隐式转换为“System.Collections.Generic.ICollection”。存在显式转换(是否缺少强制转换?)您应该使用字典而不是集合,因为它是分组的。尝试使用
var
并查看确切的类型。