LINQ嵌套和/或波斯菊数据库

时间:2020-08-06 10:10:22

标签: c# linq azure-cosmosdb

我正在尝试构建一个LINQ表达式,以便使用CosmosClient SDK从我的cosmosdb容器中获取数据。看起来像这样:

p => (p.HairState.Density == hairState.Density
      || p.HairState.Density == nextClosestHairState.Density) &&
      (p.HairState.Porosity == hairState.Porosity
      || p.HairState.Porosity == nextClosestHairState.Porosity) &&
      (p.HairState.Texture == hairState.Texture
      || p.HairState.Texture == nextClosestHairState.Texture) &&
      (p.HairState.Thickness == hairState.Thickness
      || p.HairState.Thickness == nextClosestHairState.Thickness);

这无法正常工作。另一方面:

p => (p.HairState.Density == hairState.Density) &&
      (p.HairState.Porosity == hairState.Porosity) &&
      (p.HairState.Texture == hairState.Texture) &&
      (p.HairState.Thickness == hairState.Thickness);

按预期工作。我是使用LINQ进行数据库查询的新手,所以我想知道LINQ是否不支持此类和/或嵌套。

还有,我是否有办法生成等效的sql查询,以便我能确切了解发生了什么?谢谢!

1 个答案:

答案 0 :(得分:1)

可以使用ToQueryDefinition()扩展方法从QueryText属性获取SQL查询的文本,然后可以使用资源管理器测试该SQL并获取可以正常工作的SQL查询。