根据传入的过滤器值构建谓词

时间:2014-01-16 23:53:27

标签: c# predicate

我想过滤我的列表以进行报告,但我想让它尽可能动态,以便用户可以在1列或更多列上进行过滤。

我的想法是创建一个字典,然后将其传递给一个方法,该方法将过滤掉相关的记录,但我现在仍然坚持如何做“动态”部分。

这是我目前的代码到目前为止看起来的方式,但它无效。

filters = {CourseId,2},{CourseDescription,Maths}

public IQueryable<Course> Filter(Dictionary<string,string> filters)
{
    var a = from s in context.Courses
                  select s;
    foreach (var filter in filters)
    {
        if(!string.IsNullOrEmpty(filter.Value))
        {
            a = a.Where(s => s./*filter.Key*/.ToUpper().Contains(/*filter.value*/.ToUpper()));
        }
    }
}

请有人协助并指出我正确的方向,以便我能够正常工作。

谢谢。

1 个答案:

答案 0 :(得分:0)

我刚刚使用http://www.albahari.com/nutshell/predicatebuilder.aspx根据收到的条件动态构建与Entity Framework一起使用的谓词。效果很好。