私は、与えられた型、プロパティ、および値のlinqクエリ用の式を構築する方法を持っています。この型のプロパティがnullableでない限り、これは素晴らしく機能します。ここでは私が(http://www.marcuswhitworth.com/2009/12/dynamic-linq-with-expression-trees)から働いている例です。私はプロパティでEqualsメソッドを呼び出しています。しかし、私は、Nullable型のEqualsメソッドがNullable型の代わりにObjectとしてパラメータを取ることを発見しました。 GetValueOrDefaultを使用してnull値を非表示にしようとしましたが、EFはそのメソッドをサポートしていません。簡単な例として、次のコードは、エラーがスローされます:あなたは==ではなく対等()メソッドを使用している場合Entity Framework - Linq - 'System.Object'型の定数値を作成できません。プリミティブ型のみ
decimal? testVal = new decimal?(2100);
var test = (from i in context.Leases where i.AnnualRental.Equals(testVal) select i).ToList();
しかし、それはOKに動作します。私はどのようにコード==を使用する代わりにEquals()の代わりに変換するか分からない。どんな提案も高く評価されます。
このシナリオで '=='が動作しないのはなぜですか? – cdhowie
私はcdhowieと同じ質問をするつもりです、なぜ==かなり多くは同じことをしますか? var test = context.Leases.Where(l => l.AnnualRental == testVal).ToList();うまくいくはずですか? – Joakim