我需要在cosmos数据库中找到给定帐户名列表的信息
我不想作为对Cosmos的单个查询来执行此操作,所以我认为我可以使用linq
var lowerCaseAccountNames = accounts.Select(x => x.AccountName.ToLower()).ToList();
IQueryable<Account> queryable = _cosmosConnection.Container.GetItemLinqQueryable<Account>();
queryable = queryable.Where(x => lowerCaseAccountNames.Contains((x.AccountName.ToLower())));
var iterator = queryable.ToFeedIterator();
var accountsInDatabase = new List<Account>();
while (iterator.HasMoreResults)
{
var currentResultSet = await iterator.ReadNextAsync();
accountsInDatabase.AddRange(currentResultSet);
}
以下是Cosmos中帐户的示例
{
"MyId": "35024",
"accountName": "Account to be found",
"companies": [
{
"companyId": "6f8c235e-69b7-42f9-9917-79411754fef0",
"companyName": "A company"
}
],
}
以上逻辑可以正确找到我的帐户
但是,仅填充帐户本身的属性-.e。 MyId和AccountName
我也需要填充公司
我该如何执行?
我可以看到linq生成的SQL如下
我不确定如何在代码中找到它吗?
SELECT VALUE root
FROM root
WHERE (LOWER(root["accountName"]) IN ("this does not exist", "account to be found"))
查询迭代器和LINQ迭代器映射值的方式似乎有所不同
您可以在json中看到,公司是小写字母。在我的实际课程中,它以大写字母开头
[JsonProperty("companies")]
public List<AccountCompany> Companies { get; set; }
这不会对QueryIterator造成任何问题吗?