问题:在实际编码过程中,根据不同的选择情况,会需要按照不同的条件查询数据集
如:状态confirmStatus ,如果为空的时候,查询全部,如果有具体值的时候,查询相应的值
同时还有其他条件,外键编号 task 等等。
这个时候,需要根据条件的值来判断是否增加该条件
using (CadalEntities cadalEntities = new CadalEntities())
{
string taskId = 12;
string itemConfirmStatus == "";
//构建动态条件数组
List<Expression<Func<V_TaskItem, bool>>> where = new List<Expression<Func<V_TaskItem, bool>>>();
//添加外键条件过滤
where.Add(x => x.task == taskId);
//判断是否需要添加其他条件
if (!string.IsNullOrEmpty(itemConfirmStatus))
{
where.Add(x => x.confirmStatus == itemConfirmStatus);
}
else
{
where.Add(x=>x.confirmStatus =="1" || x.confirmStatus =="3");
}
//定义查询 V_TaskItem查询的实体对象
IQueryable<V_TaskItem> query = null;
//加载查询条件
foreach (var w in where)
{
query= cadalEntities.V_TaskItem.Where(w);
}
//进行实际查询
int count = query.Count();
var list = query.OrderBy(x => x.id).Skip(requestStart).Take(requestLength).ToList();
}
结合网上众多例子,终于摸索出来了。