EFCore 查询具有多个 where 子句,这些子句一起充当 AND 而不是 OR



这是一个非常明显但棘手的问题。我无法在网络上找到答案,或者只是我缺少可以找到答案的关键字。

假设我们有许多条件要基于这些条件来筛选数据。这些条件在多个块中。如何编写它们,以便它们作为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);
}

如果这个问题需要更多详细信息,请告诉我。谢谢!

我是否缺少可以找到答案的关键字?

是的,这个缺少的关键字是Dynamic ExpressionDynamic Query。如果您遵循这些关键字,您会发现很多问题的解决方案。

正如本教程所说:

Dynamic Query允许您在运行时使用字符串表达式执行动态where子句、selectorder by

您也可以点击以下链接:

  • 代码项目
  • Microsoft

祝你好运。

最新更新