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