LINQ to Azure Search
本文关键字:Search Azure to LINQ | 更新日期: 2023-09-27 18:22:12
我正在创建一个可以使用Azure搜索服务的类。我希望它接受LINQ表达式来搜索文档,这样外部模块就不知道Azure搜索语法。
-
有没有一个库可以实现它?由于Azure搜索还很年轻,我在互联网上找不到这样的搜索。我所发现的只是RedDog包,它非常好,但仍然需要字段名和比较操作作为字符串,总有一天它肯定会变得"神奇"。
-
好的,Azure Search也接受OData格式的查询。我见过一些OData查询到LINQ表达式的解决方案,但没有一个能起到相反的作用。我需要一个可以将LINQ转换为OData字符串的库。
感谢您的帮助。
对于OData服务,您可以选择使用.NET客户端进行OData或使用代码生成器进行OData,它们非常支持LINQ。您可以参考此处了解有关如何使用OData客户端生成器生成客户端代理类的详细信息,然后使用LIQN轻松完成所需的所有查询。OData Client Generator是在OData Client for.NET的基础上构建的,我建议您可以从代码生成器开始。
但请注意,这两个库都只适用于OData V4。如果使用较旧的OData版本,则不能使用代码生成器,而是使用"添加服务引用"。然后,您还可以轻松地使用LINQ进行查询。
希望这能帮到你。
我刚刚发布了一个Azure Search工具包,其中还包括一个LINQ提供程序。该包名为AzureSearchToolkit,可作为NuGet提供https://www.nuget.org/packages/AzureSearchToolkit.
您也可以在https://github.com/nkovacic/AzureSearchToolkit.
你可以在这里尝试我的GitHub项目:
https://github.com/ubergeoff/HollowPoint.Azure
示例:
HollowPoint.Azure.DbTable<People> tt = new HollowPoint.Azure.DbTable<People>();
var filter = tt.Query()
.Where(t => t.Age >= 16 && t.Age < 33)
.ToODataString();
将输出OData格式字符串:
((Age ge 16) and (Age lt 33))