iqueryable 를 iqueryable 로 변환 할 수 있습니까?
-
16-09-2019 - |
문제
나는 공분산에 대해 알고 있으며, 일반적으로 v4.0까지 C#에서는 불가능하다는 것을 알고 있습니다.
그러나 특정 사례에 대해 궁금합니다. 변환하는 방법이 있습니까? IQueryable<Derived>
에게 IQueryable<Base>
어떻게 든 실제로 쿼리를 수행하지는 않지만 실제로 "통과"할 수있는 래퍼 클래스를 작성함으로써 .Where<>()
전화?
내 유스 케이스는 비슷한 테이블이 많은 데이터베이스 스키마를 처리하려고한다는 것입니다. 대부분의 필드는 공통적이며 많은 공통 필드가 각 테이블에서 쿼리되어야합니다. LinQTOSQL을 사용하고 있습니다. 각 테이블의 모든 쿼리를 복제하지 않기를 바랐습니다.
해결책
다음과 같은 것이 당신이 찾고있는 것입니까?
var results = queryable.OfType<Base>.Where(...);
oftype 메소드는 지정된 유형의 모든 것을 수집하고 컬렉션의 모든 항목이 유형 기반이거나 유형 기반에서 파생 된 경우 자격을 갖추어야합니다. 다음에 모든 항목은 유형 기반이 될 것입니다.
다른 팁
다음도 작동합니다. Altough는 덜 예쁘다.
var results = queryable.Select(derived => (Base)derived).Where(...);
제휴하지 않습니다 StackOverflow