排序从MongoDB获取的数据库的列表

时间:2019-06-24 14:50:20

标签: .net mongodb linq c#-2.0

尝试编码

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 个答案:

答案 0 :(得分:2)

如果您查看OrderBy的文档,则会发现它返回:

  

IOrderedEnumerable<TSource>

但是您希望它是一个List,因此您只需要在末尾调用ToList()

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

答案 1 :(得分:1)

为什么不使用客户端的ListDatabaseNames方法?

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