【发布时间】:2013-03-19 17:34:46
【问题描述】:
我有一个问题,如何添加另一个过滤器并且我必须验证它是否被选中?
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();
}
}
【问题讨论】:
-
请用您的编程语言标记它。
-
你是说你想用你的语句传回另一个表达式还是你想嵌入 lambda 表达式?我不完全了解您要做什么
-
我正在尝试嵌入 lambda 表达式。
-
好的,如果是这样,那么我提供了一个嵌入式 lambda 语句的示例。但我不确定你期望的返回值是什么,所以我不知道你想如何修改你的示例。
-
我添加更新我将如何使用。
标签: c# expression lambda