- public ActionResult MemberList(int? page, int? pageSize, string LoginId, string IsConfirm,string IsLockedOut)
- {
- Expression<Func<Members, bool>> expr = n => GetCondition(n,LoginId,IsConfirm,IsLockedOut);
- var Query = db.Members.Where(expr.Compile()).OrderByDescending(e => e.CreateDate);
- int pIndex = page ?? 1;
- int pSize = pageSize ?? 10;
- var gridViewData = new GridViewData<Members>
- {
- PagedList = Query.ToList().ToPagedList(pIndex, pSize)
- };
- ViewData["MemberList"] = gridViewData.PagedList;
- return View(gridViewData);
- }
- private static bool GetCondition(Members tb, string LoginId, string IsConfirm, string IsLockedOut)
- {
- bool boolResult = true;
- if (!string.IsNullOrEmpty(LoginId))
- {
- boolResult &= tb.LoginId==LoginId.Trim();
- }
- if (!string.IsNullOrEmpty(IsConfirm) && Regex.IsMatch(IsConfirm.Trim(), @"^(-?[0-9]*[.]*[0-9]{0,3})$"))
- {
- boolResult &= tb.IsConfirm == Convert.ToBoolean(Convert.ToInt32(IsConfirm.Trim()));
- }
- if (!string.IsNullOrEmpty(IsLockedOut)&& Regex.IsMatch(IsLockedOut.Trim(), @"^(-?[0-9]*[.]*[0-9]{0,3})$"))
- {
- boolResult &= tb.IsLockedOut == Convert.ToBoolean(Convert.ToInt32(IsLockedOut.Trim()));
- }
- boolResult &= tb.IsDelete == false;
- return boolResult;
- }
但是在查询中需要使用模糊查询,但是用戶端不支持 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 '