C# 基于传入的筛选器值生成谓词

C# 基于传入的筛选器值生成谓词,c#,predicate,C#,Predicate,出于报告目的,我希望筛选我的列表,但我希望使其尽可能动态,以便用户可以筛选1个或多个列 我的想法是创建一个字典,然后将其传递给一个方法,该方法将过滤掉相关记录,但我现在仍然无法确定如何处理动态部分 这就是我目前的代码到目前为止的样子,但它不起作用 filters = {CourseId,2},{CourseDescription,Maths} public IQueryable<Course> Filter(Dictionary<string,string> filte

出于报告目的,我希望筛选我的列表,但我希望使其尽可能动态,以便用户可以筛选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()));
        }
    }
}
请有人能帮助我,并指出正确的方向,使我可以得到这项工作


谢谢。

我最近刚刚根据收到的条件动态构建了一个谓词,用于实体框架。非常好。

您的筛选器定义与字典声明不匹配。您的代码中没有任何字符串……也许这个问题与您尝试执行的操作有关?这篇文章是由微软的某个人写的,可以通过字符串的参数来构建IQueryable,事实上,它与Visual Studio一起出现在示例中,即Dynamic.cs。谢谢你的链接。这似乎是我问题的答案: