문제

나는 공분산에 대해 알고 있으며, 일반적으로 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(...);
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top