Я хотел бы отфильтровать мой список для целей отчетности, но я хотел бы сделать его максимально динамичным, чтобы пользователь мог фильтровать по 1 или более столбцам.Build Predicate, основанный на значениях фильтра, переданных в
Идея, которую я имею, заключается в том, чтобы создать словарь, а затем передать это методу, который будет отфильтровывать соответствующие записи, но теперь я зациклился на том, как я буду делать «динамическую» часть.
Вот как выглядит мой текущий код, но он не работает.
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()));
}
}
}
Пожалуйста, помогите мне и направьте меня в правильном направлении, чтобы я мог получить эту работу.
спасибо.
Определение 'filters' не соответствует' Dictionary 'declaration. У вас нет строки в вашем коде ... –
MarcinJuraszek
Возможно, этот вопрос связан с тем, что вы пытаетесь сделать? http://stackoverflow.com/questions/848415/linq-dynamic-where-clause – Mark
Этот, написанный кем-то из Microsoft, может создавать IQueryable по параметрам строк, и он фактически находится в Образцах вместе с Visual Studio, а именно Dynamic .cs.http: //weblogs.asp.net/scottgu/archive/2008/01/07/dynamic-linq-part-1-using-the-linq-dynamic-query-library.aspx –