Re: Сложная выборка
От: RushDevion Россия  
Дата: 13.12.24 18:34
Оценка: 5 (1)
P>
P>if (filter.Param1 != null)
P>   context.Entities.Where(a => a.Param1 = filter.Param1)
P>if (filter.Param2 != null)
P>   context.Entities.Where(a => a.Param2 = filter.Param2)
P>

Вполне нормальный вариант.
Простой в реализации, понятный в поддержке и легко расширяемый (скажем, по условиям вида !=, contains, starts with и т.п.)

Можно, конечно, заморочиться и родить что-то такое:
public static Expression<Func<Entity, bool>> BuildFilterExpression(Filter filter) {
 // TODO: 
 // рефлексией вытягиваем из filter все не null-свойства
 // и в предположении, что имя свойства в фильтре = имя свойства в Entity, собираем нужный Expression
}

// Тогда будет так:
context.Entitites.Where(BuilFilterExpression(filter))

Но городить подобное ради разовой задачи, имхо, перебор.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.