2012-01-31 3 views
0
Public Function LoadSiteInfo(ByVal sId As Integer) As IQueryable(Of Site) 
    Return Me.ObjectContext.Sites.Include("SiteData").Where((Function(f) f.SiteID = sId) AndAlso Function(x) x.SiteData.SiteUpdateDate < today)) 
End Function 

에 참여, 나는 사이트 테이블에서 SiteId 필터링하기 위해 노력하고있어, ANDALSO SiteData 테이블의 SiteUpdateDate에, 내가 얻을 수있는 마지막 부분 올바른 구문 - SiteUpdateDate 특성이 SiteContext의 해당 부분 인 ObjectContext.Site의 멤버가 아니라는 것입니다.두 테이블 및 필터 결과 EF (4)를 사용하여 RIA 서비스 그래서

포함 된 테이블 SiteData의 특성을 어떻게 필터링 할 수 있습니까? 또는 이것을 다시 작성하고 SiteData childtable beeing이있는 사이트의 Iquerable을 원하는대로 필터링하는 방법은 무엇입니까? 정말 쉬워야하지만, 고민 중입니다. 선택한 부모의 필터링 된 하위 컬렉션을 포함한다고 믿기 시작합니다. ... (

답변

1

나는 이렇게 할 수 있다고 생각하지 않습니다. 먼저해야합니다. 자식 컬렉션과 부모를 반환합니다. 당신을 위해 일해야

Public Function LoadSiteInfo(ByVal sId As Integer) As IQueryable(Of Site) 
    return FillSiteInfo(sId).Where(Function(x) x.SiteData.SiteUpdateDate < today)) 
End Function 

Public Function FillSiteInfo(byVal sId as Integer) as IQueryable(of Site) 
    Return Me.ObjectContext.Sites.Include("SiteData").Where((Function(f) f.SiteID = sId).AsQueryable() 
End Function 

을.

을 또한 당신의 자식 컬렉션이 있는지 확인하기 위해 RIA 서비스를 확인해야 [포함] 속성으로.

1

을 나는 VB에서 좋지 않다. 그래서 여기에 C# ver이있다. 시온.

return this.ObjectContext 
    .Sites 
    .Where(x => x.SiteData.All(y => y.SiteUpdateData < today)) 
    .Where(x => x.SiteId == sId) 
    .Select(x => new { Sites = x, SiteDatas = x.SiteData }) 
    .Select(x => x.Sites); 

트릭은 당신이 열망로드 특성 (SiteData) 필터링 할 수 없다, 그래서 당신은 익명 형식 투영을 사용하고 다시 당신이 원하는에 쿼리를 투사 할 수 있습니다.