私は問題を抱えており、まったくそれを得ていません。 :私はこのエラーを取得するSqlQuery ToList()は動作しますが、Linq(Iqueryable)は動作しません。
var blogs1 = from c in context.Meal
where c.PersonID.Equals(id)
where (DateTime.Now.Date - c.Datetime).Days <= 7
select c;
List<Meal> blogs = blogs1.ToList();
を動作するように)だから私はこのSqlQuerry
var blogs = context.Meal.SqlQuery("SELECT * FROM dbo.Meal WHERE PersonID=" + id.ToString() + "AND DATEDIFF(day,GETDATE(),Datetime) <= 7 ").ToList();
を持っており、それは完璧に動作しますが、私は、LINQにその表現を転送しようとした、と私はToListメソッド(取得することはできません
An unhandled exception of type 'System.ArgumentException' occurred in EntityFramework.SqlServer.dll
Additional information: DbComparisonExpression requires arguments with comparable types.
私はDateTime.Now
を試してみましたが、私はネットからの発現をコピーして、ために遅延実行の私がこれを書いて、多くのことをGoogleで検索するvarブログで最初に試さ、その後、ToList<Meal>
で試してみました
var blogs = (from c in context.Meal
where c.PersonID.Equals(id)
where (DateTime.Now.Date - c.Datetime).Days <= 7
select c).ToList();
しかし、いや、それは動作しません:/ 私はSystem.Linqのを使用しています、と私はLINQのはのIQueryable ToListメソッドをサポートしていることをここにStackOverflowの上お読みください。 私のLinqが間違っていて、それがシンプルに見えて、ネットから得られたので間違ってはいけないのでしょうか?
コメントに他の情報タイプが必要な場合は、追加します。ありがとう!
EDIT1:変更された総日数は、日曜日に@ガレフが示唆していますが、エラーが続く。 (SqlFunctionsと同じ)、私が誤って重複としてこの質問をマークしたが、それはない仕上がりについては
An unhandled exception of type 'System.NotSupportedException' occurred in EntityFramework.SqlServer.dll
Additional information: LINQ to Entities does not recognize the method 'System.Nullable`1[System.Int32] DiffDays(System.Nullable`1[System.DateTime], System.Nullable`1[System.DateTime])' method, and this method cannot be translated into a store expression.
: EDIT2は:マティアスは
var now = DateTime.Now.Date;
var blogs1 = from c in context.Meal
where c.PersonID.Equals(id)
where EntityFunctions.DiffDays(now, c.Datetime) <= 7
select c;
List<Meal> blogs = blogs1.ToList();
を提案し、このエラーを得たように私はこれを試してみました。私はどこに問題があるのか分からなかったが、主な問題は、MicrosoftがDiffDaysメソッドの名前空間をEntityFunctionsからEF 6.xのDbContextに変更したことで、Linqが機能しなかったことにある。この例では、日付を比較している可能性がありますが、それは異なる方法で行われるため、重複しません。
Meal.Datetimeは、NULL値を許可していますか?私はあなたがいくつか持っていると思う。また、「今」の定義は何ですか? –
@WesleyLongいいえ、食事を追加することで自動生成されません。ユーザー入力はありません。今のところ定義が追加されています。 しかし、私は問題を解決しました。とにかくありがとう! – Vulisha
または2つの日付と比較するだけです。http://stackoverflow.com/questions/21000287/dest-difference-logic-in-linq – Slai