如何在实体框架中传递列名作为动态搜索的参数

时间:2015-08-31 15:59:05

标签: c# linq entity-framework linq-to-entities dynamicquery

我的要求是将列名与搜索数据一起传递,以便使用entityframework中的linq查询从db动态搜索。

[HttpGet]
public ActionResult Index(string Search, string Column)
{
    if (!String.IsNullOrEmpty(Search))
    {
        List<Employee> result = new List<Employee>();
        result = db.Employees.ToList();
        result = result.Where(x => x.Column.ToLower().Contains(Search.ToLower())).ToList();
        return View(result);      
    }
    else
    {
       return View(db.Employees.ToList());  
    }          

}

1 个答案:

答案 0 :(得分:4)

我认为你看起来像DLinq。使用DLinq nuget package

var result=  db.Employees.Where(Column+".Contains"+ "(\""+ Search.ToLower() + "\")").ToList();

Column参数必须与Employee实体中一个字符串属性的名称匹配。我建议使用try-catch,以防你传递错误的名字。