У меня есть этот образец документа в моей базе данных azure cosmos db.
{
"partitionKey": "SonicTag",
"label": "SonicTag",
"name": "Kasi Tournaments",
"slug": "kasi-tournaments",
"a2AQuestionsCount": 0,
"iconUrl": null,
"id": "1af53736-c492-40bf-8ef7-dba2d17f6c17"
}
Когда я запускаю следующий запрос в проводнике данных, я получаю именно то, что хочу (3 документа с указанным Идентификаторы).
SELECT * FROM c where c.id in
("dc4201ff-35b8-4eda-b0a6-f9bc2bb93926",
"3389f2f2-33f3-4b08-8d32-4602071eae30",
"1af53736-c492-40bf-8ef7-dba2d17f6c17")
and c.partitionKey = "SonicTag"
Например, по одному из моих запросов, где я ищу все теги, я могу использовать следующий код.
var feedIterator = Container.GetItemLinqQueryable<SonicTag>(true)
.Where(c => c.PartitionKey == nameof(SonicTag)
&& c.Label == nameof(SonicTag)).ToFeedIterator();
Но у меня есть Понятия не имею, как я могу написать свой LINQ, чтобы получить все
Обратите внимание, на метод, где я должен создать этот LINQ, я получаю список идентификаторов, и я должен получить все теги, которые имеют эти идентификаторы. Параметру гарантируется, что он будет содержать не более 5 идентификаторов.
Тем временем я использовал то, что явно является плохим обходным путем
var tags = new List<SonicTags>();
foreach (var id in IDs)
{
tags.Add( Helper.ConvertStreamToObject( await Container.ReadItemStreamAsync(id, partitionKey)));
}