我有一個問題,如何添加另一個過濾器,並且我必須驗證它是否被選中?如何創建動態的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