【问题标题】:Call CosmosDB ToString method in LINQ在 LINQ 中调用 CosmosDB ToString 方法
【发布时间】:2022-10-13 23:32:32
【问题描述】:

我有一个 LINQ 查询,我需要在通过 C# 中的 LINQ 构建的查询中使用 CosmosDB ToString 方法。但是我一直无法弄清楚如何做到这一点。简单地在实体值的 C# LINQ 表达式中调用 ToString() 是行不通的。

我正在尝试对数字值进行“包含”搜索。我无法更改类型,也无法添加将数字转换为字符串的重复字段。

基本上我需要的是这个(在 where 子句中):

CONTAINS(ToString(root["MyProperty"]), "MySearchValue")

我当前的 LINQ 查询是这样的(MyProperty 是 long 类型):

query.Where(x => x.MyProperty.ToString().Contains("MySearchValue"))

但这会生成以下 SQL:

CONTAINS(root["MyProperty"], "MySearchValue")

这不起作用,因为 MyProperty 是一个数字,所以 Contains 方法总是返回 false。

所以我的问题是:如何修改我的 LINQ 查询以将数字值包装在 ToString() 方法中,就像上面的第一个代码示例一样?或者目前这甚至可能吗?

【问题讨论】:

  • 您使用的是最新版本的 Microsoft.Azure.DocumentDB.Core 吗?

标签: c# linq azure-cosmosdb


【解决方案1】:

这个问题实际上有一个错误修复等待合并:https://github.com/Azure/azure-cosmos-dotnet-v3/pull/3385 这是否适用于您的具体情况?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-22
    • 1970-01-01
    • 2012-12-07
    • 2014-12-26
    • 2013-07-13
    相关资源
    最近更新 更多