Как сгладить объекты для отображения в таблице - PullRequest
0 голосов
/ 31 марта 2012

С учетом сущностей EF, определенных следующим образом:

class Person { int PersonID; string Name; string Title; }
class ContactType { int TypeID; string TypeString; } // phone # types - mobile, home, work etc.
class PersonContact { int PersonID, int ContactTypeID, string ContactText; bool IsDefault; }

Где у человека может быть несколько # телефонов и даже несколько мобильных #

Поиск способов отображения всех людей вструктура таблицы выглядит следующим образом:

PersonID, Name, Title, PrimaryContact, MobileNumber

Где PrimaryContact - это запись PersonContact с IsDefault = true

и

ГДЕ MobileNumber - это "A" запись PersonContact с PersonContact.ContactType = ContactType.TypeID и ContactType.TypeString = "Mobile"

ПРИМЕЧАНИЕ. -

PrimaryContact - это поиск в PersonContact

MobileNumber - ТАКЖЕ поиск в PersonContact

. Ониможет указывать на одну и ту же запись PersonContact или может отличаться в зависимости от IsDefault = true

ТАКЖЕ Может быть несколько "мобильных" записей PersonContact для человека

1 Ответ

1 голос
/ 31 марта 2012

Попробуйте это ниже.

var result = ctx.Persons
.Select(x => 
new {PersonID = x.PersonID, 
     Name = x.Name,
     Title = x.Title,
     PrimaryContact = x.PersonContacts.FirstOrDefault(y => y.IsDefault == true).Select(t => t.ContactText),
     MobileNumber = x.PersonContacts.FirstOrDefault(z => z.ContactType.TypeString =="Mobile").Select(q => q.ContactText)
     }).ToList();

К сожалению, я думаю, что это может привести к запросу типа select n + 1: (

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...