目前由于维护一个系统,用大了ef的枚举知识,目前木有什么好的解决方案。
项目中使用codefirst将数据库中的某一个字段映射为枚举类型,原来的用法是查询时使用枚举的单一状态,但是现在客户提需求查询时希望能够多状态查询 ,但是目前能想到的就是将枚举的多个状态传到后台先单一状态检索然后将结果集拼接,还有一个方案就是直接写sql用in 语句,但是感觉都是不太好的方案,所以求一个好的解决方案。
问题简析:就是数据库的状态字段现在是枚举了,不知道查询的时候怎么使用枚举判断多个状态。
var queryResult = from p
in
db.Products
where (
new int
?[] {1,2}).Contains(p.CategoryID)
select p;
类似与这种写法就行了,用枚举的数组 来判断包含
翻译成sql 就是 in
多谢问题解决了,和你说的一模一样,忽然产生一个困惑linq到底不持支什么C#复杂的语法?
@老三的古代:
比如 String.Equals() 的一个重载就不支持
https://msdn.microsoft.com/zh-cn/library/c64xh8f9.aspx
要小心使用C#的语法,不同的C#语法会生成出来不一样的sql语句。有的生成的很SB
@Sky.Grain: 对的,就是这个生成语法很难识别,我也是自己写了必须去运行尝试才知道是否正确。多谢英雄指点。
用linq写in不就好了。。
多谢,问题解决了。