2017-12-18 467 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