Как создать запрос, если int является нулем, и принять все - PullRequest
2 голосов
/ 28 апреля 2019

Как правильно оформить запрос без множества условий.

Если строка может быть нулевой, я могу использовать someString.Contains(null ?? string.Empty)

и мой запрос дает все, но как, если мой int равен нулю, принимает все? я не хочу делать слишком много, если еще

var students = _context.Students.Where(x =>
                            x.FacultetId == Facultet &&
                            x.Profession.Contains(model.Profession ?? string.Empty) &&
                            x.City.Contains(model.City ?? string.Empty) && 
                            x.Course == model.Course &&
                            x.Specialization.Contains(model.Specialization ?? string.Empty
                            )
                            ).ToList();

1 Ответ

2 голосов
/ 28 апреля 2019

Вместо того, чтобы создавать так много условий внутри запроса, сделайте это снаружи:

var query = _context.Students.Where(x => x.FacultetId == Facultet);

// filter by profession if there is some value
if (!string.IsNullOrempty(model.Profession))
{
    query = query.Where(x => x.Profession.Contains(model.Profession));
}

// continue with the rest of the filters...

// and only then execute the query
var students = query.ToList();

Проверка на обнуляемость int такая же.

Предполагая, SomeValue является

public int? SomeValue;

тогда:

if (model.SomeValue != null)
{
    query = query.Where(x => x.SomeValue == model.SomeValue);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...