У меня есть таблица базы данных, которая содержит «команды» и «состояния». Каждая команда может иметь несколько состояний, и пользователь может настроить это при поиске. Например, команда может быть «Выполнить» и может иметь два состояния: «Быстро» и «Медленно».
Я хочу найти в моей таблице все команды, называемые «Выполнить» с «Быстрым» или «Медленным». Это довольно просто сделать:
var results = from t in table
where t.Command == "Run" &&
(t.State == "Fast" || t.State == "Slow")
return t;
Однако пользователь также может выполнить поиск команды «Ходить» с состоянием «Быстрый», поэтому запрос будет выглядеть следующим образом:
var results = from t in table
where (t.Command == "Run" &&
(t.State == "Fast" || t.State == "Slow")) ||
(t.Command == "Walk" &&
t.State == "Fast")
return t;
Существует возможность для такого большого количества запросов, как этот, и мне интересно, как их объединить в своего рода цикл.
Я не могу сделать это:
foreach(var command in commands)
{
foreach(var state in command.states)
{
results = from t in table
where t.Command == command.Command &&
t.State == state;
}
}
потому что, как только он ищет «Выполнить», «Прогулка» будет исключена из результатов, поэтому запрос «Прогулка» вообще не даст результатов.
Кто-нибудь знает хороший способ сделать это?