Также это работает только для первой найденной записи [0]. Как я могу изменить его так, чтобы он удалял все записи?
Этот код появляется для получения коллекции, но затем удаляет только первый элемент:
var F = await cosmosManager.GetDocumentItemsAsync<T>(predicate);
await cosmosManager.DeleteDocumentItemAsync(F[0].Id);
Возможно, это будет уместно для итерации коллекции:
var F = await cosmosManager.GetDocumentItemsAsync<T>(predicate);
foreach(var f in F)
await cosmosManager.DeleteDocumentItemAsync(f.Id);
Если это Azure CosmosDB, может быть способ ускорить это, не перетаскивая все записи на клиент только для получения идентификатора и удаления по одному. Я не уверен, что посоветовать для вашего конкретного контекста, но недавно мне пришлось реализовать что-то, чтобы выборочно удалять миллионы Azure записей хранилища таблиц - Пакетное удаление в Windows Azure хранилище таблиц было полезный ресурс - по существу, использование средства, где предикат может быть отправлен на Azure для оценки. Я не знаю, применимо ли это / полезно для вашей ситуации
Если есть только несколько записей, которые нужно удалить, тогда этот упрощенный подход c может подойти; Джон упоминает WhenAll, и это, безусловно, было бы лучше для большего количества элементов - рассмотрите (если у вас огромное количество элементов и вам необходимо поддерживать отзывчивый интерфейс) либо механизм очереди, где вы помечаете элементы для удаления, и работает какой-то независимый фоновый процесс. через них или, может быть, какой-то огонь и забыть; Здесь много неизвестного.