Контроллер Где предложение - как выбрать, где не нравится - PullRequest
0 голосов
/ 02 октября 2019

Я хочу вернуть SQL-запрос для статуса столбца. У меня может быть 3 уникальных значения состояния: Новое, В процессе и Завершено. Я хочу запросить эти 3 плюс Open, который будет включать New и In Process, но не Complete. Как мне это сделать в коде моего контроллера? Могу ли я как-то использовать предложение IN? Статус будет параметр, который я хочу открыть. Вот как я это делаю сейчас (только что добавил All Open, не уверен, как связать это с предложением where:

My Viewbag:

List<SelectListItem> Stat = new List<SelectListItem>()
{
    new SelectListItem { Text = "New", Value = "New" },
    new SelectListItem { Text = "In Process", Value = "In Process" },
    new SelectListItem { Text = "Complete", Value = "Complete" },
    new SelectListItem { Text = "All Open", Value = "Open" },
    new SelectListItem { Text = "All", Value = "" },
};

Код контроллера:

public PartialViewResult ChangeDrop(string Status, string Tech)
{
    var helpdesk = from m in db.HelpDesks
           where (m.Status == Status || Status == null || Status == "") && (m.Technician == Tech || Tech == null || Tech == "")
           select m;
           return PartialView("DropdownTable", helpdesk);
}

1 Ответ

0 голосов
/ 03 октября 2019

Для запроса 'Open' Status вы можете использовать Enumerable.Contains . Вы также можете использовать String.IsNullOrEmpty , чтобы упростить проверку, не установлена ​​ли Status.

Вот пример:

var openStatus = new[] { "New", "In Process" };
var helpdesk = from m in Context.Clients
    where (m.Status == Status || (Status == "Open" && openStatus.Contains(m.Status)) || string.IsNullOrEmpty(Status))
    select m;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...