dte
特定の日付 ( )の日付部分に一致するレコードを取得するために、次の LINQ-to-Entities クエリがあります。
Dim qry = entities.Works.Where(Function(w) w.JobID = RecordID And
SqlFunctions.DatePart("y", w.FromDate) = SqlFunctions.DatePart("y", dte) And
SqlFunctions.DatePart("m", w.FromDate) = SqlFunctions.DatePart("m", dte) And
SqlFunctions.DatePart("d", w.FromDate) = SqlFunctions.DatePart("d", dte))
最初に次のように記述して、この式を再利用したいと思います。
Public SqlDateEquals As System.Linq.Expressions
.Expression(Of Func(Of DateTime, DateTime, Boolean)) = Function(dte1, dte2)
SqlFunctions.DatePart("y", dte1) = SqlFunctions.DatePart("y", dte2) And
SqlFunctions.DatePart("m", dte1) = SqlFunctions.DatePart("m", dte2) And
SqlFunctions.DatePart("d", dte1) = SqlFunctions.DatePart("d", dte2)
次に、他のクエリ内で:
Dim qry = entities.Works.Where(Function(w) w.JobID =
RecordID And SqlDateEquals(w.FromDate, dte))
私の理解では、LINQ-to-Entities は に渡された式を解析し、式の一部としても.Where
認識できるはずです。SqlFunctions.DatePart
したがって、を含む式はSqlFunctions.DatePart
、同等の SQL に解析可能である必要があります。
これどうやってするの?