簡體   English   中英

將條件語句條件添加到Linq語句

[英]Add a if statement condition to a Linq statement

我想要一種干凈的方法來將條件添加到現有的linq語句中。 我有一個新的變量personContactRoleId ,它將為零或不為零。

context.PersonContactRoles
          .Where(pcr => pcr.PersonId == personId);                        
          .ToList()
          .ForEach(pcr =>
          {
              // a lot of code
          }

我可以使用if語句通過執行iqueryable推遲執行來解決此問題,但是它看起來很丑,性能可能更低? 有什么好用的嗎?

var query = context.PersonContactRoles
          .Where(pcr => pcr.PersonId == personId);                        

if(personContactRoleId != 0)
{
    query = query.Where(b => b.PersonContactRoleId == personContactRoleId);
}

var results = query.ToList();
results.ForEach(pcr =>
{
    // a lot of code
}

同樣,這可行,但是正在尋找一種更清潔的方式

您擁有的解決方案很好,但是如果您想將所有內容都放入一個查詢中而不使用if ,則可以添加一個額外的Where條件,該條件返回記錄其中personContactRoleId == 0prc.PersonContactRoleId == personContactRoleId為true的記錄:

context.PersonContactRoles
    .Where(pcr =>
        pcr.PersonId == personId &&
        (personContactRoleId == 0 || pcr.PersonContactRoleId == personContactRoleId))
    .ToList()
    .ForEach(pcr =>
    {
        // a lot of code
    });

這可以工作,而無需if塊來檢查personContactRoleId是否為0

var query = context.PersonContactRoles
              .Where(pcr => pcr.PersonId == personId).Where(b => {
    return b.PersonContactRoleId == personContactRoleId && personContactRoleId != 0

    }).ToList().ForEach(pcr =>
    {
        // a lot of code
    }   

暫無
暫無

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

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