Linq对象动态查询是否可能?

use*_*969 4 c# linq

想知道是否可以使用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)

cod*_*ion 6

另一种方法是传递字符串过滤器而不是谓词.该动态库LINQ使这成为可能.

public IEnumerable<Customer> Find(string filter)
{
    //filter would be something like "Age >= 20"
    return internalCustomerList.Where(filter);
}
Run Code Online (Sandbox Code Playgroud)

  • +1我将这个库与JQGrid结合使用,非常强大 (3认同)