2017-12-18 472 views
2

我一直在努力这个星期。我似乎可以在C#中找到答案,但不能在vb.net中找到答案,因为VB.net使用的是匿名类型。我可以将我的专栏分组,但我只想要短日期(11/11/11),而不是日期和时间(11/11/11 11:11:11)。这里是我目前得到的:linq groupby没有时间字段vb.net

Dim preSort = SortedTimeline.GroupBy(Function(GroupTime) New With {Key GroupTime.Scheduled_Start}) 

这只有在时间也匹配时才创建组。而且我不能在密钥上放置任何.tostring或任何日期魔法,因为它是匿名的。

任何想法???

+0

你就不能使用'GroupTime.Scheduled_Start.Date'? – DavidG

+0

'DbFunctions.TruncateTime'就是你需要的。如果您使用C#或VB.NET,则无关紧要。 –

+0

dbfunctions告诉我:“匿名类型成员的名字只能推断弗洛姆单或合格的名字,不带参数”我已经忘了,但走这条道路之前。 – Doonze

回答

4

通常情况下你会使用DateTime.Date属性,但EF6不支持它,并利用TAT目的DbFunctions.TruncateTime方法需要。另外,VB.NET不要求使用匿名类型(尽管我非常肯定有办法指定匿名类型成员名称)。当你按单场像你的情况,你可以使用简单的下面(如Group By VB.NET example所示):

.GroupBy(Function(GroupTime) DbFunctions.TruncateTime(GroupTime.Scheduled_Start)) 
+0

这完全正确!完美工作!我想我只有10个代表,需要15个代表积极参与。如果有人看到这个请为我加油!谢谢!!! – Doonze