鉴于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是IsDefault = true的PersonContact记录
和
WHERE MobileNumber是带有PersonContact.ContactType = ContactType.TypeID和ContactType.TypeString =“Mobile”的“A”PersonContact记录
注意 -
PrimaryContact是对PersonContact
的查找MobileNumber也是对PersonContact
的查询他们可以指向相同的PersonContact记录,也可以根据IsDefault = true而不同
也可能有一个人的多个“移动”PersonContact记录
答案 0 :(得分:1)
请尝试以下操作。
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();
可悲的是,我认为这可能会导致选择n + 1类型的查询:(