2016-11-07 71 views
0

我有2個數據庫字段,需要根據這些值過濾結果。實體框架,是否有可能在where子句中使用substract

舉例來說,客戶最大存儲位置和存儲位置正在使用中。要確定是否有人使用更多的空間,我想這樣做。

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

但是這是行不通的。這是可能的還是應該使用不同的方法?

編輯:

數據庫是MySQL,它是通過實體框架使用。這兩個字段的數據類型都是數據庫中的INT值。

我測試了以下版本的工作,其建議

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

根源:

我更深入地研究這個問題,並發現這是MySQL的相關的問題。這些字段出於某種原因「無符號整數」,因此數據庫無法理解計算中的負值。

兩種情況將工作

+1

這是什麼'max_storage_palces'的數據類型? – Sampath

+1

爲什麼你認爲這不起作用? – tym32167

+1

當「不工作」時會發生什麼?什麼是數據類型(DB和.NET)?爲什麼不'o.max_storage_palces

回答

2

是的,你可以做它。但是,你必須使用ToList()從數據庫中讀取記錄。

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(); 
相關問題