2016-11-07 83 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(); 
相关问题