2012-01-31 10 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 

に参加し、私はサイトのテーブルからサイトIDでフィルタしようとしている、ANDALSO SiteDataテーブルのSiteUpdateDateに、それは私が得ることができない最後の部分です構文が正しい - SiteUpdateDate属性がObjectContext.Siteのメンバではないことを示しています。これはSiteDataの一部です。だから二つのテーブルやフィルタ結果EF 4を使用し、RIAサービス

含まれているテーブルSiteDataの属性をフィルタする方法を教えてください。または、私はこれを書き直して、私が望むようにSiteDataのchildtable beeingでSite of 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)でフィルタリングした後、戻ってあなたが望むものにクエリを投写することはできません。

関連する問題