Сортировка списка баз данных, извлеченных из MongoDB - PullRequest
3 голосов
/ 24 июня 2019

Пробное кодирование

Client = new MongoClient($"mongodb://{connectionParameters}");

List<dynamic> names = Client.ListDatabases().ToList()
      .Select(x => new { name = x["name"].ToString() })
      .OrderBy(x => x.name)
      ;

, но компилятор выдает ошибку

Не удается неявно преобразовать тип
'System.Linq.IOrderedEnumerable <>'
в
'System.Collections.Generic.List'.

Существует явное преобразование (вам не хватает приведения?)

Не уверен, что такое средство защиты.

Также пытался

List<string> names = Client.ListDatabases().ToList()
    .Select(x => x["name"].ToString())
    ;

но также с ошибкой

Невозможно неявно преобразовать тип 'System.Collections.Generic.IEnumerable' в 'System.Collections.Generic.List'.Существует явное преобразование (вам не хватает приведения?)

Ответы [ 2 ]

2 голосов
/ 24 июня 2019

Если вы посмотрите документацию OrderBy , вы увидите, что она возвращает:

IOrderedEnumerable<TSource>

но вы ожидаете этогобыть List, поэтому вам просто нужен последний вызов ToList() в конце

List<dynamic> names = Client.ListDatabases().ToList()
      .Select(x => new { name = x["name"].ToString() })
      .OrderBy(x => x.name)
      .ToList();
1 голос
/ 24 июня 2019

почему бы не использовать ListDatabaseNames метод клиента?

var dbNames = client.ListDatabaseNames()
                    .ToList()
                    .OrderBy(n => n)
                    .ToArray();
...