Для отношений предложений and
вы можете просто добавить метод фильтра .Where()
, например:
where conditionOriginal(r) and conditionDynamic(r)
в
var results = (from r in originalResults
where originalConditions(r)
select r);
...
if (conditionA)
results = results.Where(r => conditionDynamic(r));
Однако, чтобы добавить отношение типа 'или', вам нужно объединиться с исходным набором результатов, например так:
where conditionOriginal(r) or conditionDynamic(r)
становится
var results = (from r in originalResults
where conditionOriginal(r)
select r);
...
if (conditionB)
results = results.Union((from r in originalResults
where conditionDynamic(r)
select r));
или
if (conditionB)
results = results.Union(originalResults.Where(conditionDynamic(r)));