Мне нужен хороший чистый подход к добавлению условного выражения к существующему оператору linq. У меня есть НОВАЯ переменная personContactRoleId
, которая будет равна нулю или не равна нулю.
context.PersonContactRoles
.Where(pcr => pcr.PersonId == personId);
.ToList()
.ForEach(pcr =>
{
// a lot of code
}
Мне удалось решить эту проблему с помощью iqueryable отсрочки выполнения с помощью оператора if, но это выглядит довольно уродливо и, возможно, менее производительно? Что лучше использовать?
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
}
Опять же, это работает, но в поисках более чистого способа сделать это