1

나는 특정 유형의 엔티티를 필터링하려고를 인식하지 못합니다. Entity Framework를 사용하고 있으며 부모 엔티티와 부모 엔티티를 상속받은 다양한 자식이 있습니다. 나는이 아이들 중 하나를 걸러 내려고 노력하고있다. 예를 들어얻기 엔티티는 오류를 반환 - 엔티티에 LINQ는 방법 'System.Type GetType을()'

, 나는 다음과 같은 구조를 가지고 :

  • 주소 : 엔티티
    • 우편 번호 : 주소
    • 거리 : 사용자 엔티티 참조가

주소를 하나의 주소. PostCode 유형의 주소와 연결된 사용자 목록을 얻으려면 어떻게합니까? I 즉

시도 :

var query = from User p in context.Users 
         where p.Address.GetType() == typeof(PostCode) 
         select p; 

하지만 내가 얻을 : 엔티티에

LINQ는 방법 'System.Type GetType을()' 방법을 인식하지 않으며,이 방법은 변환 할 수없는 상점 식으로

나는 사용자 목록을 먼저 얻은 다음 몇 가지 유형을 선택하는 것과 관련된 몇 가지 해결책을 보았습니다. 이 솔루션의 문제점은 쿼리가 모든 사용자를 먼저 얻는다는 것입니다. 필자는 꽤 많은 사용자가 있기 때문에 필자의 쿼리에 필터를 포함시키고 싶습니다.

감사합니다.

+0

기다립니다. 사용자는 주소가 하나뿐입니까? 따라서 PostCode 또는 Street 중 하나만 가질 수 있습니까? 그게 잘못 아닌가? – Euphoric

+0

글쎄, 나는이 예제를 간단하게 만들었다. 아마도 가장 좋은 예는 아니지만, 그렇습니다. PostCode 또는 Street 만있을 수 있습니다. – Karan

+2

'p.Address is PostalCode'를 사용하려고 시도했습니다. –

답변

3

시도하여 연산자입니다.

var query = from User p in context.Users 
        where p.Address is PostCode 
        select p; 
+0

예를 들어 주시겠습니까? 사용자는 주소 유형과 관련이 없습니다. 사용자 p에서 context.Users 어디 p.Address.OfType ...? 그 나던 내가 사용자의 목록을 얻을 때, 다른 주에 – Karan

+0

을 작동하는 것, 그리고 나는 그들 (참고 MyUser) 중 하나를 선택 - 나는 우편 번호 개체를 얻을 수있는 방법. 즉 PostCode p = myUser.Address (작동하지 않거나 캐스팅을 했습니까? 아니면 더 좋은 방법이 있습니까?) – Karan

+1

캐스팅이 작동합니다. PostCode p = (PostCode) myUser.Address; – Euphoric