2017-01-22 10 views
0

私は人々のリストを生成する追加以下のクエリを使用して親エンティティから列

var officers = db.RootDomains.Where(rd => rd.ID == id) 
            .SelectMany(rd => rd.Companies) 
            .SelectMany(c => c.CompanyMatches) 
            .Select(cm => cm.CompaniesHouseRecord) 
            .SelectMany(chr => chr.CompanyOfficers); 

これは私がしたい人を返しますが、私はCompanyOfficersに追加の列を含めます。

CompanyMatchesエンティティのプロパティはMatchMethodです。返されたデータセットのすべてのCompanyOfficerにこの値を添付します。

これは可能ですか?

+0

あなたは動的オブジェクトを試しました。.SelectMany(chr => chr.CompanyOfficers); –

答えて

0

実際に、祖先オブジェクトのプロパティを子オブジェクトにアタッチすることはできません。子オブジェクトには、それに属するプロパティのみを含めることができます。 CompanyOfficerとMatchMethodプロパティから必要なすべてのプロパティを持つ匿名オブジェクトを返すことができます。たとえば、

var officers = db.RootDomains 
           .SelectMany(rd => rd.Companies) 
           .SelectMany(c => c.CompanyMatches) 
           .Select(cm => cm.CompaniesHouseRecord) 
           .SelectMany(chr => chr.CompanyOfficers) 
           .Select(x => new 
            { 
             Id = x.Id, // This would be the Company Officer Id 
             MatchMethod = x.CompanyHouseRecord.CompanyMatch.MatchMethod, // This would be the ancestor property you want to include 
             AnyOtherProperty = ... 
            }; 

これは、すべてのプロパティを持つオブジェクトのIEnumerableを提供します。厳密に型付けされたオブジェクトhowerverにプロパティを動的に追加する方法はありません。

+0

'x.CompanyHouseRecord.CompanyMatch.MatchMethod'はコレクションが単一ではないため動作しません。 – Guerrilla

関連する問題