10

フィールドを含むLinqクエリでのみ日付のみを比較する必要がありdatetimeます。ただし、以下の構文では、次のエラーメッセージが表示されます。

The specified type member 'Date' is not supported in LINQ to Entities. Only initializers, entity members, and entity navigation properties are supported.

フィールドから日付だけを抽出する方法を知っている人はいdatetimeますか?

var duplicate = from a in _db.AgentProductTraining
                where a.CourseCode == course.CourseCode &&
                a.DateTaken.Date == course.DateTaken.Date &&
                a.SymNumber == symNumber
                select a;
4

7 に答える 7

15

少し遠回りに思えるかもしれませんが、SqlFunctions クラスのDateDiffメソッドを使用してこれを行うことができます。両方の値を渡し、"Day" を使用して、それらの日数の差を見つけます (同じ日にある場合は 0 になるはずです)。

次のように:

from a in _db.AgentProductTraining
                where a.CourseCode == course.CourseCode &&
                SqlFunctions.DateDiff("DAY", a.DateTaken, course.DateTaken) == 0 &&
                a.SymNumber == symNumber
                select a;
于 2013-02-08T18:19:16.123 に答える
12

EntityFunctions.TruncateTime()名前空間の下で使用できますSystem.Data.Objects

元。

db.Orders.Where(i => EntityFunctions.TruncateTime(i.OrderFinishDate) == EntityFunctions.TruncateTime(dtBillDate) && i.Status == "B")

魅力のように動作します。

アップデート

この関数は、LINQ を介してエンティティをクエリする場合にのみ機能します。LINQ オブジェクトでは使用しないでください。

EF6 の場合、System.Data.Entity 名前空間で DbFunctions.TruncateTime() を使用します。

于 2013-12-05T09:52:03.577 に答える
6

次のように実行できます。

var data1 = context.t_quoted_value.Where(x => x.region_name == "Pakistan" 
                        && x.price_date.Value.Year == dt.Year
                        && x.price_date.Value.Month == dt.Month
                        && x.price_date.Value.Day == dt.Day).ToList();
于 2014-06-24T06:46:29.137 に答える
2

これを試して

DateTime dt =course.DateTaken.Date;
var duplicate = from a in _db.AgentProductTraining
                where a.CourseCode == course.CourseCode &&
                a.DateTaken == dt &&
                a.SymNumber == symNumber
                select a;

a.DateTaken に Time も含まれている場合は、これらのリンクを参照して日付を変更してください。
Date プロパティは、LINQ To Entities では使用できません。

LINQ to Entities (Entity Framework) を使用して日付を比較する

「日付」は、LINQ to Entities ではサポートされていません。初期化子、エンティティ メンバー、およびエンティティ ナビゲーション プロパティのみがサポートされています

http://forums.asp.net/t/1793337.aspx/1

于 2013-07-01T05:42:17.810 に答える
0

これは、時間(時間と分の部分)も考慮しなければならなかった同様の日付検索を行うことで終了した方法です

from x in _db.AgentProductTraining
                where 
                       x.CreatedOn.Year == mydacourse.DateTakente.Year
                    && x.CreatedOn.Month == course.DateTaken.Month
                    && x.CreatedOn.Day == course.DateTaken.Day
                    && x.CreatedOn.Hour == course.DateTaken.Hour
                    && x.CreatedOn.Minute == course.DateTaken.Minute
                select x;
于 2018-04-15T19:04:21.503 に答える
-1

.Date を外す フィールドが DateTime の場合は == と比較できます

var duplicate = from a in _db.AgentProductTraining
                where a.CourseCode == course.CourseCode &&
                a.DateTaken == course.DateTaken &&
                a.SymNumber == symNumber
                select a;
于 2015-04-11T18:51:59.997 に答える