2017-01-22 3 views
0

ich erzeuge eine Liste der Personen mit der unten stehenden AbfrageHinzufügen Spalte von Mutterunternehmen

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); 

Dies gibt die Leute, die ich will, aber ich mag eine zusätzliche Spalte auf CompanyOfficers aufzunehmen.

Die CompanyMatches Einheit verfügt über eine Eigenschaft MatchMethod. Ich möchte, dass dieser Wert an jede CompanyOfficer im zurückgegebenen Dataset angefügt wird.

Ist das möglich?

+0

Sie versucht, dynamisches Objekt innerhalb .SelectMany (chr => chr.CompanyOfficers); –

Antwort

0

Man kann nicht wirklich eine Eigenschaft von einem Vorfahren Objekt auf ein Kind-Objekt anhängen. Das untergeordnete Objekt kann nur Eigenschaften enthalten, die zu ihm gehören. Sie können versuchen, ein anonymes Objekt zurückzugeben, das über alle Eigenschaften verfügt, die Sie von dem CompanyOfficer plus der MatchMethod-Eigenschaft wünschen. Zum Beispiel:

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 = ... 
            }; 

Dies würde Ihnen eine IEnumerable von Objekten mit allen Eigenschaften geben, die Sie möchten. Es gibt keine Möglichkeit, einem stark typisierten Objekt dynamisch Eigenschaften hinzuzufügen.

+0

'x.CompanyHouseRecord.CompanyMatch.MatchMethod' funktioniert nicht, weil sie Sammlungen sind nicht einzeln. – Guerrilla