2010-05-08 3 views

답변

6

이 같은 하위 유형에 대한 조회 할 수 있습니다

var horses = from animal in ctx.AnimalSet 
       where animal is Horse 
       select animal as Horse; 

이 모든 말은 내 examle 컨텍스트에서 동물 세트에서 객체를 가져옵니다. 당신이 하위 유형 특정 속성에 조회하고자하는 경우에 당신은

을 수행 할 수 있습니다

var horses = from animal in ctx.AnimalSet 
      where animal is Horse //edit, this line is not needed 
      let horse = animal as Horse 
      where horse.TracksWon > 3 
      select horse; 

이 모든 SQL로 변환되므로, 클라이언트 측에서 모든 동물 및 필터링을 가져 오는 등의 오버 헤드가 없다, 작동 그것은해야한다.

작품의 HTH

10

로저의 응답 종류,하지만 당신이 원하는 결과를 제공하지 않을 수 있습니다. 일반적으로 OfType()을 사용하는 것이 좋습니다.

var horses = from animal in ctx.AnimalSet 
      where animal is Horse 
      select animal as Horse; 

이 유형 IQueryable<Animal>horses한다 : 자신의 예를 사용합니다. 그러나이 경우에 당신은 아마 당신이 얻을 수있는 IQueryable<Horse>을 원하는 기준 : 단지

var horses = from animal in ctx.AnimalSet.OfType<Horse>() 
      select animal; 

... 나 : 마찬가지로

var horses = ctx.AnimalSet.OfType<Horse>(); 

, 로저의 두 번째 쿼리는 다음과 같이 다시 표현 될 수있다 :

var horses = from horse in ctx.AnimalSet.OfType<Horse>() 
      where horse.TracksWon > 3 
      select horse; 

읽기 쉽지만 결과 유형을 IQueryable<Horse>으로 변경합니다.

관련 문제