EF动态条件查询很简单,就是连着用Where就行了,下面看例子:
有一张User表,字段Id,Name,Age,Sex
var pageSize = 20; //每页记录数
var pageNum = 1; //当前页码
//
// 根据用户姓名、年龄范围、性别来查询用户,结果按照用户ID倒序排序
// 参数:
// name: 用户姓名
// beginAge: 年龄范围的开始值
// endAge: 年龄范围的结束值
// sex: 性别
// count: 总记录数
// 返回:
// 筛选的用户列表
//
private List<User> getUser(string name, int beginAge, int endAge, int sex, out int count)
{
//这里db是继承DbContext类new出来的对象,全局用一个就行了
//防止查询条件都不满足,先生成一个空的查询
var where = db.Users.Where(user => true);
//设置name条件
if (!String.IsNullOrEmpty(name))
{
where = where.Where(user => user.Name = name);
}
//设置年龄条件
if (beginAge > 0 && beginAge < endAge)
{
where = where.Where(user => user.Age >= beginAge && user.Age < endAge);
}
//设置性别条件
if (sex > 0)
{
where = where.Where(user => user.Sex = sex);
}
//统计总记录数
count = where.Count();
//结果按照ID倒序排序
where = where.OrderByDescending(user => user.Id);
//跳过翻页的数量
where = where.Skip(pageSize * (pageNum - 1));
//获取结果,返回
return where.Take(pageSize).ToList();
}
好了这就简单,EF的动态查询~~