有天和朋友讨论数据组件(HFSoft.Data)的条件对象,大家都让同条件对象在构造复杂点的条件时很不方便,维护起来也很麻烦.如:((OrderID>10600) and Order < 10700)) or (OrderID >10800 and OrderID<10900)),通过条件对象构造的确很不直观和后期难以维护.比这复杂的的SQL条件在开发中是经常碰到的!在这各情况下用条件对象会让程序变得更糟糕!后来他提出了一个意见说能不能把条件对象加上运算符重载,并发来相关技术应用网址.
    看完资料后敲了一下自己的脑袋,这东西自己竟然没有想到(基础没打好!),条件对象加了运算符重载后使用方便和简洁多了.以上面的条件例重载后的查询对象表达式:((exp1&exp2)|(exp3&exp4)).得到的效果自己也意想不到,运算符重载真是一个不错误的功能,可惜以前没有想到过!
((OrderID>10600) and Order < 10700)) or (OrderID >10800 and OrderID<10900)) or EmployeeID=1
运用条件对象查询代码如下:
using(HFSoft.Data.IDataSession session = HFSoft.Data.MappingContainer.ConfigContainer.OpenSession())
{
 Expression exp1 = ExpressionFactory.Rt("OrderID",10600)& ExpressionFactory.Le("OrderID",10700);
 Expression exp2 = ExpressionFactory.Rt("OrderID",10800)& ExpressionFactory.Le("OrderID",10900);
 session.Open();
 System.Collections.IList list = session.List(typeof(Northwind.Entitys.Orders),(exp1 | exp2) | ExpressionFactory.Eq("EmployeeID",1));
 this.dataGrid1.DataSource = list;
}
事例代码

相关文章:

  • 2021-05-31
  • 2022-02-06
  • 2021-06-28
  • 2022-01-19
  • 2022-12-23
  • 2021-06-15
  • 2021-10-27
  • 2022-01-09
猜你喜欢
  • 2021-09-16
  • 2022-01-07
  • 2021-10-10
  • 2022-12-23
相关资源
相似解决方案