2017-06-14 5 views
0

私は外来キーを持たないテーブルを持っています(そして、残念なことにそれを制御することはできません)。私は、エンティティを返すようにしようとしていますと、以下のようにそれは、関連するコレクションです:サブコレクションを返すためのEntity Framework linqクエリ

from charity in context.Charities 
join registration in context.Registrations on charity.RegisteredNumber equals registration.RegisteredNumber 
join annualReturn in context.AnnualReturns on charity.RegisteredNumber equals annualReturn.RegisteredNumber 
select new { Charity = charity, Registration = registration, AnnualReturn = annualReturn} 

これは私の(正しい)関連の登録を持っている慈善団体のリストを返します。

ただし、慈善団体には複数のAnnualReturnがありますが、これはただ1つを返します。これはこの匿名オブジェクト内のコレクションである可能性はありますか?

私が探している出力の線に沿っている:

{ Charity = singleCharity, Registration = singleRegistration, AnnualReturns = List<AnnualReturn>}

おかげ

+0

あなたが期待している結果は何ですか?匿名のオブジェクトに、AnnualReturnのコレクションが必要ですか? – octavioccl

+0

@octavioccl予想される出力を追加しました – ADringer

+0

データベースに存在しないEFモデルのナビゲーションプロパティと外部キー列を宣言できます。 –

答えて

0

from ar in context.AnnualReturns 
group ar by annualReturn.RegisteredNumber into annualReturn 
join charity in context.Charities 
       on annualReturn.Key equals charity.RegisteredNumber 
join registration in context.Registrations 
       on charity.RegisteredNumber equals registration.RegisteredNumber 
select new { Charity = charity, Registration = registration, AnnualReturn = annualReturn } 
+0

それは重複慈善団体を返し、毎年のリターンごとに登録してもらえませんか?私は潜在的に慈善団体に追加するコレクションを増やすことができるので、Charityはルートエンティティ – ADringer

+0

である必要があります。 'group..by'は各RegisteredNumberごとに1つのannualReturnオブジェクトを提供します。そして、annualReturnオブジェクトはそれ自身、RegisteredNumberを共有するすべてのAnnualReturns行のコレクションです –

+0

申し訳ありませんが、 'group by'行は見えませんでした。同じレベルに他のコレクションがある場合でも私はそれを行うことができますか? – ADringer

0

はたぶんこれは何です....さんはこれを試してみましょう探している:

from charity in context.Charities 
join registration in context.Registrations on charity.RegisteredNumber equals registration.RegisteredNumber 
select new { Charity = charity, 
      Registration = registration, 
      AnnualReturn = context.AnnualReturns.Where(at=>ar.RegisteredNumber==charity.RegisteredNumber)} 
関連する問題