【发布时间】: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