Индивидуальное (где) предложение в Entity Framework - PullRequest
0 голосов
/ 07 июля 2019

Я пытаюсь вставить условие Where в чтение таблицы базы данных SQL-сервера, где некоторые условия зависят от других переменных, у меня есть 7 полей для фильтрации в базе данных и вводятся пользователем, любой может иметь значение или может быть нулевым. это должно выглядеть так, если все переменные поиска Var1 и т. д. не равны нулю

Select * from Table1 where Field1 = var1 and Field2 = Var2 and Field3 = Var3

Однако, если, например, Var2 имеет значение null, его следует игнорировать в операторе Select, и он будет выглядеть как

Select * from Table1 where Field1 = var1 and Field3 = Var3

Это очень похоже на строку SQL, однако при использовании оператора select с лямбда-выражением, как в Entity Framework, я не смог найти ничего похожего на простую строку sql.

Я использую VS2017 с языком кодирования c # для приложения ASP.NET Core. Сервер базы данных - SQL2016.

Это выглядит довольно стандартно, однако я не смог найти решение. У кого-нибудь есть хорошее решение?

1 Ответ

2 голосов
/ 07 июля 2019

Если я правильно понимаю, что вы хотите, стандартный способ таков:

using (var context = new SomeContext())
{
    IQueryable<SomeEntity> query = context.SomeEntities;

    if (var1 != null)
        query = query.Where(x => x.Field1 == var1);

    if (var2 != null)
        query = query.Where(x => x.Field2 == var2);

    // and so on

    // use the query somehow
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...