2013-10-30 1 views
2

Entity Framework에서 LINQ를 사용하는 동적 쿼리를 사용하고 있습니다. 사용자 입력 필터로 일부 테이블을 쿼리하기 위해 PredicateBuilder을 사용하여 조건부 WHERE 섹션을 만듭니다. 그게 정말 잘 작동하지만 반환되는 열의 수는 고정되어 있습니다.LINQ 빌드 Where 절의 PredicateBuilder를 조건부로 사용하여 선택하십시오.

사용자가 보고서에서 필요로하는 열을 선택해야하는 경우 필터 외에도 Where 절 에서처럼 동적 인 myQuery.Select(x => new { ... })을 수행하는 방법을 모르기 때문에 문제가 발생합니다.

어떻게하면 이렇게 할 수 있습니까?

답변

1

검색의 비트가 까다로울 수 있음을 알 수 있습니다. 익명 형식은 컴파일 할 때 만들어 지므로 동적으로 만들 수 없습니다. This answerReflection.emit을 사용하는 솔루션을 포함합니다.

가능한 경우 IDictionary<,>과 같은 것을 반환하는 것이 좋습니다.

+0

Reflection.Emit()을 내부적으로 사용하는 https://github.com/thiscode/DynamicSelectExtensions를 사용하여 종료했습니다. 나는 특별한 변화 (Select를 사용하는 코드)를 위해 약간의 변경을했다. – Romias