[英]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 == 0
或prc.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.