Re[2]: Сложная выборка
От: Qulac Россия  
Дата: 13.12.24 20:17
Оценка:
Здравствуйте, RushDevion, Вы писали:

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>>

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

RD>Можно, конечно, заморочиться и родить что-то такое:

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

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

RD>Но городить подобное ради разовой задачи, имхо, перебор.

У нас используется второй вариант, часть которого писал я. А так я вообще за первый всегда, потому что он проще. Если лень самому писать много if, то можно попросить capilot — он накатает.
Программа – это мысли спрессованные в код
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.