我正在尝试执行以下操作,但我想根据传递给函数的参数进行过滤。以下代码完美运行。
public void Test()
{
var clist = GetFilteredList("Scott");
}
public List<Customer> GetFilteredList1(string filterValue)
{
IQueryable<Customer> returnQuery = GetAll();
returnQuery = returnQuery.Where(x => x.FirstName.Contains(filterValue));
return returnQuery.ToList();
}
我试图做的是这样的事情......
public void Test()
{
var clist = GetFilteredList2("FirstName", "Scott");
}
public List<Customer> GetFilteredList2(string fieldName, string filterValue)
{
IQueryable<Customer> returnQuery = GetAll();
returnQuery = returnQuery
.Where(x => x.GetType().GetProperty(fieldName).GetValue(x).ToString()
.Contains(filterValue));
return returnQuery.ToList();
}
我知道这不太正确,我怀疑我需要以某种方式使用 Expression 类来构建自定义表达式,但我不太确定如何。Expression 类中没有“Contains”或“Like”函数,那么我将如何为此构建自定义表达式?