lambda 多条件组合查询 动态传参

首先,是必不可少的,大概了解了一下lambda 多条件组合查询的方向,这里首先,写一个委托的方法: 

1     private bool GetCondition(RP_OrderMain ordermain)
2         {
3             bool resbool = true;
4             if (filterSaleman != null)
5                 resbool &= ordermain.Saleman.ToString().Contains(filterSaleman);
6             if (SerStartTime != null)
7                 resbool &= ordermain.CreatedDate >= SerStartTime;
8             return resbool;
9         }

这时候 组合查询就完成了,下面在需要调用的地方使用就可以了,具体使用过程如下:

先引用:using System.Linq.Expressions;

1         private void GetOrderList()
2         {
3             List<RP_OrderMain> ListOrderMain = new List<RP_OrderMain>();
4             Expression<Func<RP_OrderMain, bool>> expr = n => GetCondition(n);
5             var linqcond = ListOrderMain.Where(expr.Compile());
6             //....后面就该干嘛干嘛了
7         }
下面再介绍下lambda传参的方法,先搞定方法再调用吧

1
    #region 获取带排序和条件的分页列表数据 2 public List<T> GetPageList(int pageindex, int pageSize, Expression<Func<K, DateTime>> expr, Expression<Func<K, bool>> condexpr) 3 { 4 //Func<K, DateTime> result = expr.Compile();//这里不要也可以 5 //Func<K, bool> condresult = condexpr.Compile();
        //下面是你需要用到的语句,我这个地方是一个泛型的例子,你可以根据你自己的情况动态的写
6 var memberList = _localDb.GetTable<K>().Where(condexpr).OrderByDescending(expr).Skip((pageindex - 1) * pageSize).Take(pageSize).ToList();
7     }

下面是调用上面的方法

1      Expression<Func<PerstProduct, DateTime>> expr = p =>p.UpdateDate;//因为UpdateDate是时间,所以用的是DateTime。
2      Expression<Func<PerstPurchase, bool>> condexpr = p => p.PurchaseBatch.Contains(cond) || p.PurchaseBatch.Contains(cond); 

3      var PageDataToReturn = GetPageList(pageindex, pageSize, expr, condexpr);

上面就是一个简单的lambda传动态值的实例了,有什么不足之处,希望拍砖。

以上仅是我参照网上的例子做的简单型的lambda多条件查询,这个算比较简单的了,希望对大家有用。

首发于:http://www.ywrj.net/a/NET/SL_WPF/20120727/11482.html

转载于:https://www.cnblogs.com/shuibin/archive/2012/04/27/2473810.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值