【问题标题】:LINQ to Azure SearchLINQ to Azure 搜索
【发布时间】:2014-09-17 22:03:18
【问题描述】:

我正在创建一个将与 Azure 搜索服务一起使用的类。我希望它接受用于搜索文档的 LINQ 表达式,因此外部模块不知道 Azure 搜索语法。

  1. 有没有可以实现它的库?由于 Azure Search 还很年轻,我在 Internet 上找不到这样的。我发现的只是 RedDog 包,它非常好,但仍然需要字段名称和比较操作作为字符串,有一天肯定会成为“魔术”。

  2. 好的,Azure 搜索也接受 OData 格式的查询。我见过很少的 OData-query-to-LINQ-expression 解决方案,但没有一个相反的解决方案。我需要一个可以将 LINQ 转换为 OData 字符串的库。

感谢任何帮助。

【问题讨论】:

标签: c# .net linq azure odata


【解决方案1】:

对于 OData 服务,您可以选择使用 .NET 客户端进行 OData 或 OData 代码生成器,它们对 LINQ 有很好的支持。您可以参考here 详细了解如何使用 OData 客户端生成器生成客户端代理类,然后使用 LIQN 轻松完成您需要的所有查询。而OData Client Generator是建立在OData Client for .NET之上的,我建议你可以直接从代码生成器入手。

但请注意,这两个库都仅适用于 OData V4。如果您使用较旧的 OData 版本,则不能使用代码生成器,而是使用 "Add Service Reference"。然后您还可以轻松地使用 LINQ 进行查询。

希望对您有所帮助。

【讨论】:

【解决方案2】:

你可以在这里试试我的 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))

【讨论】:

    【解决方案3】:

    我刚刚发布了一个 Azure 搜索工具包,其中还包括一个 LINQ 提供程序。 该包名为 AzureSearchToolkit,以 NuGet https://www.nuget.org/packages/AzureSearchToolkit 的形式提供。

    你也可以在https://github.com/nkovacic/AzureSearchToolkit查看源代码。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多