2009-04-15 3 views
1

I했습니다 다음 ADO.NET 엔티티 프레임 워크 엔터티 데이터 모델을 가지고 : 나는 또한 특정 아이디의 서비스 및 주어진 상태의 키워드 모두 모든 보험 계약자를 찾으려면LINQ Where 절에서 컬렉션을 검색하려면 어떻게합니까?

ADO.NET Entity Data Model

.

이 LINQ는 작동하지 않음 : 절은 그 방법으로 p.Services 및 p.Keywords의 EntityCollections를 검색 할 수 없습니다

Dim ServicesId As Integer = ... 
Dim KeywordStatus As Integer = ... 

Dim FoundPolicyholders = From p As Policyholder In db.PolicyholderSet.Include("Keywords").Include("Services") _ 
         Where p.Services.Id = ServicesId _ 
         And p.Keywords.Status = KeywordStatus _ 
         Select p 

.

'이드' 'System.Data.Objects.DataClasses.EntityCollection ( .... 서비스의)'의 구성원이 아닙니다.

원하는 LINQ 구문은 무엇입니까?

답변

6
db.PolicyholderSet.Where(ph => 
    ph.Services.Any(s => s.Id == someId) && 
    ph.Keywords.Any(kw => kw.Status == someStatus)) 

왜 쿼리가 작동하지 않습니까? p.Servicesp.Keywords은 및 Keyword 컬렉션이므로 - Id 또는 Status 속성이 없으므로 p.Services.Id 또는 p.Keywords.Status을 사용할 수 없습니다.

Visual Basic & hellip;

Dim FoundPolicyholders = From p As Policyholder In db.PolicyholderSet.Include("Keywords").Include("Services") _ 
         Where p.Services.Any(Function(s) s.Id = ServicesId) _ 
         And p.Keywords.Any(Function(k) k.Status = KeywordStatus) _ 
         Select p 
+0

"Any"기능이 내가 필요한 단서가되었습니다. 고맙습니다. –