我想过滤我的列表以进行报告,但我想让它尽可能动态,以便用户可以在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()));
}
}
}
请有人协助并指出我正确的方向,以便我能够正常工作。
谢谢。
答案 0 :(得分:0)
我刚刚使用http://www.albahari.com/nutshell/predicatebuilder.aspx根据收到的条件动态构建与Entity Framework一起使用的谓词。效果很好。