Вам не нужно делать цикл вообще:
return _context.Users.Where(x => args.Any(word => x.Name.Contains(word)));
РЕДАКТИРОВАТЬ: В общем, вы можете использовать:
Func<User, bool> predicate = user => false;
foreach (var item in items)
{
var predicateCopy = predicate;
predicate = user => predicateCopy(user) || someOtherCondition;
}
return query.Where(predicate);
Это приведет к довольно глубоким стекам (один делегат вызывает другого, и т.д.). Там, где конкретная ситуация позволяет вам использовать Any
, обычно это лучше.
Я бы ожидал, что Any
сработает в большинстве ситуаций, когда у вас есть набор элементов, которые потенциально могут соответствовать ... подход, отличный от Any
, является подходящим для "в некоторых ситуациях любой, кому за 18, - это хорошо. ... в некоторых ситуациях подходит любой человек с фамилией, начинающейся с буквы "G" и т. д.