首页 新闻 赞助 找找看

EF 枚举使用

0
悬赏园豆:5 [已解决问题] 解决于 2015-12-01 09:42

目前由于维护一个系统,用大了ef的枚举知识,目前木有什么好的解决方案。

项目中使用codefirst将数据库中的某一个字段映射为枚举类型,原来的用法是查询时使用枚举的单一状态,但是现在客户提需求查询时希望能够多状态查询 ,但是目前能想到的就是将枚举的多个状态传到后台先单一状态检索然后将结果集拼接,还有一个方案就是直接写sql用in 语句,但是感觉都是不太好的方案,所以求一个好的解决方案。

问题简析:就是数据库的状态字段现在是枚举了,不知道查询的时候怎么使用枚举判断多个状态。

老三的古代的主页 老三的古代 | 初学一级 | 园豆:183
提问于:2015-11-29 17:38
< >
分享
最佳答案
2

var queryResult = from p in db.Products
where (new int?[] {1,2}).Contains(p.CategoryID)
select p;

 

类似与这种写法就行了,用枚举的数组 来判断包含

翻译成sql  就是 in 

Sky.Grain | 菜鸟二级 |园豆:308 | 2015-11-30 13:23

多谢问题解决了,和你说的一模一样,忽然产生一个困惑linq到底不持支什么C#复杂的语法?

老三的古代 | 园豆:183 (初学一级) | 2015-11-30 19:06

@老三的古代:  

比如 String.Equals() 的一个重载就不支持

https://msdn.microsoft.com/zh-cn/library/c64xh8f9.aspx

 要小心使用C#的语法,不同的C#语法会生成出来不一样的sql语句。有的生成的很SB

Sky.Grain | 园豆:308 (菜鸟二级) | 2015-11-30 19:29

@Sky.Grain: 对的,就是这个生成语法很难识别,我也是自己写了必须去运行尝试才知道是否正确。多谢英雄指点。

老三的古代 | 园豆:183 (初学一级) | 2015-12-01 09:40
其他回答(1)
1

用linq写in不就好了。。

收获园豆:5
吴瑞祥 | 园豆:29449 (高人七级) | 2015-11-30 09:38

多谢,问题解决了。

支持(0) 反对(0) 老三的古代 | 园豆:183 (初学一级) | 2015-11-30 19:05
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册