2016-11-07 3 views
0

Ich habe 2 Datenbankfelder und es ist notwendig, Ergebnisse basierend auf diesen Werten zu filtern.Entity-Framework, ist es möglich Subtraktion in Where-Klausel

Als Beispiel Kunden Max Speicherplätze und Speicherplätze im Einsatz. Um festzustellen, ob jemand mehr Platz benötigt, möchte ich das so machen.

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

Aber das funktioniert nicht. Ist das möglich oder sollte ich einen anderen Ansatz verwenden?

EDIT:

-Datenbank MySQL und es ist Trog Entity Framework verwendet. Der Datentyp für beide Felder sind INT-Werte in der Datenbank.

Getestet habe ich diese Version folgende arbeitet die

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

URSACHE vorgeschlagen wurde:

Ich war die Untersuchung dieses Problem tiefer und fand heraus, dass dies MySQL bezogenes Problem. Die Felder waren aus irgendeinem Grund "Unsigned INT", so dass die Datenbank die negativen Werte in der Berechnung nicht verstand.

werden In beiden Fällen arbeiten

+1

was ist der Datentyp dieses 'max_storage_palces'? – Sampath

+1

Warum denken Sie, dass das nicht funktioniert? – tym32167

+1

Was passiert, wenn es "nicht funktioniert"? Was sind die Datentypen (DB und .NET)? Warum nicht 'o.max_storage_palces

Antwort

2

Ja, Sie it.But tun können, müssen Sie ToList() verwenden, um die Datensätze aus der Datenbank zu holen.

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

ODER

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