entity framework 6.0 复杂条件的两种调用方式
来源:互联网 发布:阿里云服务器机房地址 编辑:程序博客网 时间:2024/05/17 09:10
代码如下,某些类是自己写,可以不关注,只关注形成条件部分(方法1,方法2)
共同的部分
排序实体类 omf1 = new 排序实体类("字段a", true);//多个字段排序
排序实体类 omf2 = new 排序实体类("字段b", false);
采用方法1或者2
测试实体类 prexxgk = basebll.GetSingle<测试实体类>(condition, new List<排序实体类>() { omf1, omf2 });
形成的sql语句类似
Select * from a where 字段c=111 and 字段d=222 and ( (字段a>’2014-6-4’ and 字段b!=333) or (字段a==’2014-6-4’ and 字段b>333) )
方法1.
Expression<Func<测试实体类, bool>> condition = c => (c.字段c == 某数据实体.字段c && c.字段d == 某数据实体.字段d &&
((c.字段a > 某数据实体.字段a && c.字段b != 某数据实体.字段b) || (c.字段a == 某数据实体.字段a && c.字段b > 某数据实体.字段b)));
方法2.(参考网址 http://www.albahari.com/nutshell/predicatebuilder.aspx )
var innerChild1= PredicateBuilder.True<测试实体类>();
innerChild1 = innerChild1.And(p => p.字段a >某数据实体.字段a);
innerChild1 = innerChild1.And(p => p.字段b != 某数据实体.字段b);
var innerChild2 = PredicateBuilder.True<测试实体类>();
innerChild2 = innerChild2.And(p => p.字段a == 某数据实体.字段a);
innerChild2 = innerChild2.And(p => p.字段b > 某数据实体.字段b);
var inner = PredicateBuilder.False<测试实体类>();
inner = inner.Or(innerChild1.Expand());
inner = inner.Or(innerChild2.Expand());
var condtion = PredicateBuilder.True<测试实体类>();
condtion = condtion.And(p => p.字段c == 某数据实体.字段c);
condtion = condtion.And(p => p.字段d == 某数据实体.字段d);
condtion = condtion.And(inner.Expand());
方法2参考对应的官方网站时,会报 错误 (在指定的 LINQ to Entities 查询表达式中未绑定参数“f”。)
不知道是不是 linqkit不是最新的缘故,google后,发现加上expand方法就可以了。解决参考网站:
http://stackoverflow.com/questions/16462692/nesting-predicatebuilder-predicates-the-parameter-f-was-not-bound-in-the-sp 虽然这个家伙是通过 where(条件1).where(条件2).where(条件3)这种方式来解决的 可是回答他问题的expand方法对我有效,就采用该方法了.
- entity framework 6.0 复杂条件的两种调用方式
- entity framework——实体连接查询两种方式
- Entity Framework 复杂类型
- Entity Framework 复杂类型
- Entity Framework加载数据的三种方式。
- Entity FrameWork复杂属性摸索
- Game Framework的两种实现方式
- MVC5 Entity Framework学习之创建复杂的数据模型
- Hibernate条件查询的两种方式
- 两种Domain Entity生成方式
- 网站分页功能的实现(Entity Framework和ADO.NET两种综述)
- Entity Framework 4.1 之四:复杂类型
- Entity Framework 的多条件组合查询和 LIKE 查询(Combination search and simulate LIKE search with Entity Framework
- ajax 调用webservice的两种方式
- C#调用WPS的两种方式
- dll的两种调用方式
- 调用EJB的两种方式
- WebService的两种调用方式
- eclipse svn插件在线安装
- 互联网思维
- onvif规范的实现:onvif开发常用调试方法 和常见的segmentation fault错误
- EditText 类似搜索框的效果
- 用户中心上线 采用全新简约式UI效果
- entity framework 6.0 复杂条件的两种调用方式
- 蜗牛—C#程设之DataGridView数据库绑定控件
- Making User-Managed Backups-17.3、Making User-Managed Backups of Offline Tablespaces and Datafiles
- JSON 字符串 与 java 对象的转换
- 对苹果“五仁”编程语言Swift的简单分析
- setDescendantFocusability,在父View和子View间处理焦点关系
- 根据结构体某个成员的地址求出结构体所有成员的值
- 中断处理体系结构
- jquery $.get $.post的区别