linq实现动态查询和模糊查询
2008-12-01 18:09
239 查看
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 '
{
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 '
相关文章推荐
- 【菜鸟看框架】——Linq实现动态模糊查询
- 【菜鸟看框架】——Linq实现动态模糊查询
- [转]Linq to sql 实现多条件的动态查询(方法二)
- Linq to sql 实现多条件的动态查询(方法一)
- [导入]Ajax实现在textbox中输入内容,动态从数据库中模糊查询显示到下拉框中
- EntityFramework.Extended 实现Linq 动态查询和动态条件
- Ajax实现在textbox中输入内容,动态从数据库中模糊查询显示到下拉框中
- 动态SQL中 实现条件参数 varchar类型的参数名称 以及模糊查询实现
- Ajax实现在textbox中输入内容,动态从数据库中模糊查询显示到下拉框中
- Linq to sql 实现多条件的动态查询(方法一)
- 使用反射让linq实现动态查询, 类似拼接sql语句的where 条件
- linq中动态模糊查询
- ajaxpro实现在textbox中输入内容,动态从数据库中模糊查询显示到下拉框中
- 使用反射让linq实现动态查询, 类似拼接sql语句的where 条件
- MyBatis入门07--实现sql动态模糊查询
- Linq动态查询与模糊查询 ---转
- 用Linq 实现动态多条件查询
- 动态生成的chosen实现模糊查询
- UGUI实现模糊查询动态生成列表功能
- MySQL中根据if标签实现多条件模糊查询(动态SQL语句)