EFCore запрос с множественным предложением where, которые вместе действуют как AND, но не OR - PullRequest
0 голосов
/ 23 января 2020

Это очень очевидный, но хитрый вопрос. Я не смог найти его ответ в Интернете, или мне просто не хватает ключевых слов, которые могли бы найти его ответ.

Допустим, у нас есть много условий, на основе которых мы хотим фильтровать данные. Эти условия в нескольких блоках. Как написать их так, чтобы они работали как AND предложение, но не OR, при условии, что они участвуют только в определенных условиях.

    var query = _entities.AsQueryable();

    if (model.CityId != default)
    {
        query = query.Where(x => x.CityId == model.CityId);
    }
    if (!string.IsNullOrWhiteSpace(model.PostalCode))
    {
        query = query.Where(x => x.Proppostcode == model.PostalCode);
    }
    if (!string.IsNullOrWhiteSpace(model.AirportCode))
    {
        query = query.Where(x => x.AirportCode == model.AirportCode);
    }

Дайте мне знать, ребята, если этот вопрос требует более подробной информации. Спасибо!

1 Ответ

0 голосов
/ 23 января 2020

мне не хватает ключевых слов, которые могли бы найти ответ?

Да, это пропущенное ключевое слово Dynamic Expression или Dynamic Query. Если вы будете следовать этим ключевым словам, вы найдете множество решений вашей проблемы.

Как и в этом уроке сказано:

Dynamic Query позволяет выполнить Dynami c where предложение, select, order by, со строковым выражением во время выполнения .

, вы можете перейти по ссылкам ниже, тоже:

удачи.

...