linq实现动态查询和模糊查询

 
  1.  public ActionResult MemberList(int? page, int? pageSize, string LoginId,  string IsConfirm,string IsLockedOut)
  2.         {
  3.             Expression<Func<Members, bool>> expr = n => GetCondition(n,LoginId,IsConfirm,IsLockedOut);
  4.             var Query = db.Members.Where(expr.Compile()).OrderByDescending(e => e.CreateDate);
  5.           
  6.             
  7.             int pIndex = page ?? 1;
  8.             int pSize = pageSize ?? 10;
  9.             var gridViewData = new GridViewData<Members>
  10.                                    {
  11.                                        PagedList = Query.ToList().ToPagedList(pIndex, pSize)
  12.             };
  13.             ViewData["MemberList"] = gridViewData.PagedList;
  14.             return View(gridViewData);
  15.         }
  16.      
  17.         private static bool GetCondition(Members tb, string LoginId, string IsConfirm, string IsLockedOut)
  18.         {
  19.             bool boolResult = true;
  20.             if (!string.IsNullOrEmpty(LoginId))
  21.             {
  22.                 boolResult &= tb.LoginId==LoginId.Trim();
  23.             }
  24.             if (!string.IsNullOrEmpty(IsConfirm) && Regex.IsMatch(IsConfirm.Trim(), @"^(-?[0-9]*[.]*[0-9]{0,3})$"))
  25.             {
  26.                 boolResult &= tb.IsConfirm == Convert.ToBoolean(Convert.ToInt32(IsConfirm.Trim()));
  27.             }
  28.             if (!string.IsNullOrEmpty(IsLockedOut)&& Regex.IsMatch(IsLockedOut.Trim(), @"^(-?[0-9]*[.]*[0-9]{0,3})$"))
  29.             {
  30.                 boolResult &= tb.IsLockedOut == Convert.ToBoolean(Convert.ToInt32(IsLockedOut.Trim()));
  31.             }
  32.             boolResult &= tb.IsDelete == false;
  33.             return boolResult;
  34.         }

但是在查询中需要使用模糊查询,但是用戶端不支持 SqlMethods.Like().并且 SqlMethods.Like()只是转成SQL语句,因此如果要對登录账户进行模糊查詢的的話就不能使用 SqlMethods.Like()。既然不能使用那么我们该怎么办呢?接著往下看

解決辦法。我們 可以根据.NET對字符串的处理來实现。

tb.LoginId.IndexOf(LoginId.Trim())>=0;      //等同于like '%LoginId%'

tb.LoginId.StartsWith(LoginId.Trim())>=0;  // 等同于like 'LoginId%'

tb.LoginId.EndWith(LoginId.Trim())>=0;  // 等同于like '%LoginId '

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值