如何使用Lambda表达式创建动态查询

时间:2013-01-16 10:28:38

标签: asp.net asp.net-mvc-3 linq dynamic razor

我正在使用搜索功能,我有三个文件

示例: - 姓名,州,年龄

当我选择名称并进行搜索时,它应显示相关记录,

当我选择姓名,状态和搜索时,我应该显示记录中包含两个所选选​​项的记录,

如果记录没有任何选定的选项,则它不应显示记录,

因此,我应该使用动态查询使用lambda表达式

所以请发给我任何一个例子。

1 个答案:

答案 0 :(得分:1)

您可以这样使用 Predicate Builder

我有相同的申请,你可以在这里查看:Dynamic query with Linq

   var predicate = PredicateBuilder.True<employee>();

    if(!string.IsNullOrEmpty(txtAddress.Text))
        predicate = predicate.And(e1 => e1.Address.Contains(txtAddress.Text));
    if (!string.IsNullOrEmpty(txtEmpId.Text))
        predicate = predicate.And(e1 => e1.Id == Convert.ToInt32(txtEmpId.Text));
    if (!string.IsNullOrEmpty(txtDesc.Text))
        predicate = predicate.And(e1 => e1.Desc.Contains(txtDesc.Text));
    if (!string.IsNullOrEmpty(txtName.Text))
        predicate = predicate.And(e1 => e1.Name.Contains(txtName.Text));

    EmployeeDataContext edb= new EmployeeDataContext();
    var emp = edb.Employees.Where(predicate);
    grdEmployee.DataSource = emp.ToList();
    grdEmployee.DataBind();

Dynamically Composing Expression Predicates