簡體   English   中英

我如何最好地結合這兩個LINQ表達式?

[英]How do I best combine these two LINQ expressions?

第一個表達式使用另一個標識值檢索聯系人的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();

好吧,看起來這可能是一個加入:

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

請注意,您可能希望使用Single()而不是First()來清楚地表明您確實只期望單個結果。

另一個選擇是使用Single重載,它帶有一個表達式

var contact = DAL.dc.Contacts.Single
   (c => c.ContactID == DAL.dc.ContactMrns.Single
         (cm => cm.MRN == recipient.MRN).ContactID);

你可以這樣做:

var contact = DAL.dc.Contacts.First(
    c => c.ContactID == DAL.dc.ContactMrns.First(
        cm => cm.MRN == recipient.MRN));

直接使用第二個表達式 通過它,你有聯系對象,並通過它直接聯系和contactId

當然,你可以,這只是一個問題,它是否有用。

var contact = DAL.dc.Contacts.First(contact => 
       contact.ContactId == DAL.dc.ContactMrns.First(mrns =>
             mrns.MRN == recipient.MRN))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM