第一个表达式使用另一个标识值检索联系人的ID.第二个表达式使用联系人ID检索整个联系人.看起来我应该能够将这两个陈述合并为一个,但我挣得太多(疲惫,压力,愚蠢的错误等等).这两个陈述有效,我得到了我需要的结果,但我觉得它可能更清晰,可能只是一个表达式.
谢谢大家的帮助!
var contactId = DAL.dc.ContactMrns.Where(cm => cm.MRN == recipient.MRN)
.Select(x => x.ContactId)
.First();
var contact = DAL.dc.Contacts.Where(c => c.ContactID == contactId).First();
Run Code Online (Sandbox Code Playgroud)
好吧,看起来这可能是一个加入:
var contact = (from cm in DAL.dc.ContactMrns
where cm.MRN == recipient.MRN
join c in DAL.dc.Contacts on c.ContactID equals cm.ContactID
select c).First();
Run Code Online (Sandbox Code Playgroud)
请注意,您可能希望使用Single()而不是First()明确表示您确实只期望单个结果.
另一个选择是使用Single重载,它带有一个表达式:
var contact = DAL.dc.Contacts.Single
(c => c.ContactID == DAL.dc.ContactMrns.Single
(cm => cm.MRN == recipient.MRN).ContactID);
Run Code Online (Sandbox Code Playgroud)