Мне нужно найти информацию в моей базе данных космоса, учитывая список имен аккаунтов
Я не хочу делать это как отдельные запросы в Космос, поэтому я подумал, что могу использовать 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"
}
],
}
Лог c выше правильно находит мою учетную запись
Однако, заполнены только свойства самой учетной записи - .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?
Может кто-нибудь помочь, пожалуйста?
Приветствия
Пол