我的数据库上下文有以下查询
Dim query = (
From n In db.tblNews
Join nc In db.tblNewsCategories On n.CatID Equals nc.CategoryID
Order By n.DateEntered Descending
Select New With {
.NewsID = n.NewsID,
.Title = n.Title,
.NewsText = n.NewsText,
.isPublished = n.isPublished,
.CatID = n.CatID,
.CategoryName = nc.CategoryName,
.DateEntered = n.DateEntered,
.ReadCount = n.ReadCount,
.DatePublished = n.DatePublish
}
)
然后,根据我的 DropDownListBox 中的值,我稍后在代码中应用 WHERE 子句来过滤数据,例如;
If sDate <> "" Then
query = query.Where(Function(n) n.DateEntered = sDate)
End If
现在,sDate 的格式为2013-06-18
,在 db 中,相应DateTime
字段的格式为 ,2013-06-18 16:41:33.973
因此查询返回零结果。
我试图做以下事情:
If sDate <> "" Then
query = query.Where(Function(n) String.Format(n.DateEntered, {0:yyyy-MM-dd}) = sDate)
End If
这给了我错误: LINQ to Entities 无法识别方法 'System.String ToString(System.String)' 方法,并且此方法无法转换为存储表达式
我也不想在我的选择中格式化日期,因为我希望输出与数据库完全相同。
如何在查询的 where 子句中格式化日期?如果我不能解决这个问题吗?