To zapytanie zwraca identyfikator pracownika, imię i nazwisko, nazwę firmy, nazwę firmy i miasto firmy. Brakujący adres e-mail pracownika (adres e-mail przechowywany w tabeli EmployeeEmailAddress) i numery telefonów pracowników (numer telefonu zapisany w tabeli EmployeePhoneNumbers)..SelectMany() i pobieranie danych z więcej niż jednej pokrewnej tabeli
Potrzebowałem dodać .SelectMany(), aby uzyskać relację z firmą macierzystą i uzyskać dostęp do identyfikatora, nazwy i miasta firmy. Teraz jednak nie mam dostępu do żadnych właściwości, które nie zostały znalezione w tabeli PersonOrgMap. Nie mogę nawigować do innych stołów. Usunięcie .SelectMany() pozwala mi na nawigację do innych tabel, ale tracę dostęp do informacji o firmie macierzystej.
var employees = Contacts.Where(c => c.ContactAttributes
.Any (ca => ca.AttributeID == 1153))
.SelectMany (x => x.ChildPersonOrgMaps)
.Select (c => new { employeeId = c.Child.ContactID,
c.Child.FirstName,
c.Child.LastName,
companyId = c.ParentContactID,
c.Parent.OrganizationName,
c.Parent.City
}
)
.OrderBy (c =>c.LastName).ThenBy(x => x.FirstName)
.Dump();
+1 do bezwstydnej wtyczki LINQPad ;-) Bardzo fajny produkt! – DenaliHardtail