我有一个问题,如何添加另一个过滤器,并且我必须验证它是否被选中?如何创建动态的Lambda表达式
private Expression < Func < Entity.Modelos.Flux, bool >> Filter() {
var dateStart = dtpDateStart.Value.Date;
var dateEnd = dtpDateEnd.Value.Date;
Expression < Func < Entity.Modelos.Flux, bool >> expr = null;
expr = f = > f.DatFlux >= dateStart.Date && f.DatFlux <= dateEnd.Date;
if (txtDescription.Text != String.Empty) {
//add filter
}
return expr;
}
更新:我将在这个函数中使用表达式:
public virtual IQueryable <T> Filter(Expression < Func < T, bool >> expressao) {
return DbSet.Where(expressao).AsQueryable <T>();
}
什么,我试图做的就是这一点,但与表达
public List <Users> GetUsers(int ? id, string name) {
using(DBContext ctx = new DBContext()) {
IQueryable query = ctx.Usuarios;
if (id.HasValue)
query = query.Where(x = > x.ID == id);
if (!string.IsNullOrEmpty(name))
query = query.Where(x = > x.Name.StartsWith(name));
return query.ToList();
}
}
请与您的编程语言标记这一点。 – 2013-03-19 17:38:14
你是说你试图用你的语句传回另一个表达式,或者你试图嵌入lambda表达式?我不完全理解你正在尝试做什么 – Corylulu 2013-03-19 17:48:59
我想嵌入lambda表达式。 – davidterra 2013-03-19 17:52:02