想知道是否可以使用linq到对象创建动态linq查询.
我有一个用户可以过滤多个事物的屏幕.我需要构建一个不使用数据库的内存过滤
所以假设我在内存中有一个客户列表,我想根据一些多选进行过滤.
我认为一种可以传递谓词的方法可以解决这个问题,但显然不是.
我该怎么做?
例如
public class Biz
{
public List<Customer> GetAllByName(string name)
{
return Repository.Find(x=> x.Name == name);
}
}
public class Repository
{
private List<Customer> internalCustomerList = GetAllCustomers();
public IEnumerable<Customer> Find(Expression<Func<T, bool>> predicate)
{
//How do I make below work in linq to object
return internalCustomerList.Where(predicate);//error here
}
}
Run Code Online (Sandbox Code Playgroud)
另一种方法是传递字符串过滤器而不是谓词.该动态库LINQ使这成为可能.
public IEnumerable<Customer> Find(string filter)
{
//filter would be something like "Age >= 20"
return internalCustomerList.Where(filter);
}
Run Code Online (Sandbox Code Playgroud)