Build LINQ Выберите условно аналогично использованию предложения PredicateBuilder для Where

Я работаю с динамическими запросами, используя LINQ на Entity Framework. Для запроса некоторых таблиц с помощью пользовательских фильтров ввода мы используем PredicateBuilder создавать условные ГДЕ разделы. Это прекрасно работает, но количество возвращаемых столбцов фиксировано.

Теперь, если нам нужно, чтобы пользователь выбрал, какие столбцы ему нужны в его отчете, помимо их фильтров, у нас проблемы, так как мы не знаем, как сделать динамический myQuery.Select( x => new { ... }) как мы делаем для пункта Где.

Как мы можем достичь чего-то подобного?

1 ответ

Решение

Немного поиска показывает, что это сложно. Анонимные типы создаются во время компиляции, поэтому создать их динамически непросто. Этот ответ содержит решение с использованием Reflection.emit,

Если возможно, я бы рекомендовал просто вернуть что-то вроде IDictionary<,> вместо.

Другие вопросы по тегам