2016-11-07 12 views
0

2つのデータベースフィールドがあり、それらの値に基づいて結果をフィルタリングする必要があります。Entity Frameworkでは、where句でsubstractを使用できますか?

例として、お客様の最大の保管場所と使用中の保管場所です。誰かがより多くのスペースを使用しているかどうかを判断するために、私はこのようにしたいと思います。

var temp = db.Storege.Where(o => (o.max_storage_places - o.places_in_use) < 0).ToList() 

これは機能しません。これは可能ですか、私は別のアプローチを使用すべきですか?

EDIT:

データベースは、MySQLであり、トラフEntity Frameworkを使用しています。両方のフィールドのデータ型は、データベースのINT値です。

私は次のバージョンが

var temp = db.Storege.Where(o => o.max_storage_places < o.places_in_use).ToList() 

根本原因提案された動作していることをテストした:私はより深く、この問題を調査し、これは、MySQL関連の問題であることが判明した

を。フィールドは何らかの理由で "Unsigned INT"だったので、データベースは計算の負の値を理解できませんでした。

どちらの例は

+1

この 'max_storage_palces'のデータ型は何ですか? – Sampath

+1

なぜこれが機能していないと思いますか? – tym32167

+1

「動作していない」場合はどうなりますか?データ型(DBと.NETの両方)は何ですか?なぜ 'o.max_storage_palces

答えて

2

はい、あなたは、データベースからレコードを取得するためにToList()を使用する必要がit.Butを行うことができます動作します。

var temp = db.Storege.Where(o => (o.max_storage_palces - o.places_in_use) < 0).ToList(); 

OR

var temp = db.Storege.Where(o => (o.max_storage_palces < o.places_in_use).ToList(); 
関連する問題