Build LINQ Выберите условно аналогично использованию предложения PredicateBuilder для Where
Я работаю с динамическими запросами, используя LINQ на Entity Framework. Для запроса некоторых таблиц с помощью пользовательских фильтров ввода мы используем PredicateBuilder
создавать условные ГДЕ разделы. Это прекрасно работает, но количество возвращаемых столбцов фиксировано.
Теперь, если нам нужно, чтобы пользователь выбрал, какие столбцы ему нужны в его отчете, помимо их фильтров, у нас проблемы, так как мы не знаем, как сделать динамический myQuery.Select( x => new { ... })
как мы делаем для пункта Где.
Как мы можем достичь чего-то подобного?
1 ответ
Немного поиска показывает, что это сложно. Анонимные типы создаются во время компиляции, поэтому создать их динамически непросто. Этот ответ содержит решение с использованием Reflection.emit
,
Если возможно, я бы рекомендовал просто вернуть что-то вроде IDictionary<,>
вместо.