vb.net - 没有时间字段的linq groupby vb.net

标签 vb.net entity-framework linq

我已经为此苦苦挣扎了好几个星期。我似乎可以在 C# 中找到答案,但不能在 vb.net 中找到答案,因为 VB.net 使用匿名类型。我可以对我的专栏进行分组,但我只想要短日期 (11/11/11),而不是日期和时间 (11/11/11 11:11:11)。这是我目前所拥有的:

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

仅当时间也匹配时才会创建组。由于它是匿名的,我无法在 key 上放置任何 .tostring 或任何日期魔法。

有什么想法吗???

最佳答案

通常您会使用 DateTime.Date 属性,但 EF6 不支持它,需要使用 DbFunctions.TruncateTime达到此目的的方法。

此外,VB.NET 不要求使用匿名类型(尽管我很确定有办法指定匿名类型成员name)。当您像您的情况一样按单个字段进行分组时,您可以简单地使用以下内容(如 Group By VB.NET example 中所示):

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

关于vb.net - 没有时间字段的linq groupby vb.net,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47868046/

相关文章:

c# - 在我的LINQ查询中添加OR?

c# - .NET如何在单独的类/表单上捕获预先捕获的异常

c# - 使用 IN 子句的手动(动态)LINQ 子查询

entity-framework - 希望 Entity Framework 6.1 急切加载只加载第一级

c# - Entity Framework 中的映射?

c# - linq 对象相等性以及如何正确覆盖它

c# - Linq 导致 Top (1) 出现语法错误

vb.net - WCF 服务 TcpNetBinding StreamRequest 未接收流

vb.net - 'Sybase ASE OLE DB Provider' 提供商未在本地计算机上注册

.net - VB.NET DLL "ActiveX component can' t 创建对象”