Во-первых, я не уверен, какие условия использовать, чтобы задать этот вопрос, что, вероятно, поэтому я не нашел ответа от себя.
Итак, я работаю с Linq to SQL (С#,.Net 4), и я хочу получить список всех пользователей, которые соответствуют критериям, основы которых я бы сделал примерно так:
var users = DataContext.Users.Where(x => x.Criteria1 == "something");
но в этом случае есть несколько полей, которые я хочу сопоставить, все эти конкретные поля являются общей проверкой, и я хотел бы иметь возможность создавать функцию выделения, которую я могу использовать в любых моих пользовательских запросах проверьте этот матч.
Чтобы попытаться объяснить, что немного лучше дать пример: Допустим, у пользователя есть 5 флагов, и мне нужна общая проверка, чтобы увидеть, установлен ли какой-либо из этих флагов. Поэтому я мог бы написать свой запрос следующим образом:
var users = DataContext.Users.Where(x => x.Flag1 || x.Flag2 || x.Flag3 || x.Flag4 || x.Flag5);
Но то, что я хотел бы сделать, - это выделить "флажок флажка 5", чтобы я мог использовать его и в других запросах, в конечном итоге я хотел бы использовать что-то вроде:
var users = DataContext.Users.Where(x => x.Criteria1 == "something" && CheckForFlags(x));
Я пробовал это, имея такую функцию:
static bool CheckForFlags(User user)
{
return user.Flag1 || user.Flag2 || user.Flag3 || user.Flag4 || user.Flag5;
}
но я получаю сообщение об ошибке:
"Метод" Boolean CheckForFlags (Пользователь) "не поддерживает перевод на SQL".
..., что имеет смысл, но это что-то, что я могу сделать, чтобы сделать эту работу так, как я ее хочу? Или это ограничение, потому что я использую Linq для SQL и на самом деле что-то, что будет работать с Linq для объектов?