私のdbコンテキストに次のクエリがあります
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 句で日付をフォーマットするにはどうすればよいですか? できない場合、これに対する解決策はありますか?