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

Posted

技术标签:

【中文标题】对从 MongoDB 获取的数据库列表进行排序【英文标题】:Sort a list of database fetched from MongoDB 【发布时间】:2019-06-24 14:50:20 【问题描述】:

尝试编码

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”。存在显式转换(您是否缺少演员表?)

【问题讨论】:

【参考方案1】:

如果您查看 OrderBy 的文档,您会看到它返回:

IOrderedEnumerable&lt;TSource&gt;

但您希望它是List,因此您只需要最后一次调用ToList()

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

【讨论】:

【参考方案2】:

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

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

【讨论】:

我猜是因为我看到了一个例子,或者找到了 ListDatabases first 的文档 :)

以上是关于对从 MongoDB 获取的数据库列表进行排序的主要内容,如果未能解决你的问题,请参考以下文章

MongoDB分页获取数据排序阶段缓存溢出问题

在 SQL 中对从 1 月到 12 月的月份进行排序

如何对从 XML 解析的对象进行排序

Grails投影忽略MongoDB的排序顺序

我需要按相关性对从 SOLR 返回的方面进行排序

在 Objective-C 中按评论数量对核心数据中的 FetchedObjects 数组进行排序