在C#中,如果我有BsonDrray的BsonArray并且我想根据每个BsonDocument中的元素对BsonArray元素进行排序,我该怎么做?
这样的事情:
BsonArray originalTags = doc["tags"].AsBsonArray;
BsonArray newTags = originalTags.OrderBy(what goes here?);
我正在使用它来对嵌套文档进行排序,因此我无法使用集合排序方法。 我正在使用官方的C#驱动程序。
答案 0 :(得分:1)
OrderBy是LINQ(不是C#驱动程序)的扩展方法,它有两个重载。在一个中你提供一个lambda来提取你想要排序的键,另一个你提供一个lambda来比较两个键。
这是一个基于名为“x”的嵌入元素的值对BsonArray进行排序的示例:
var originalTags = new BsonArray {
new BsonDocument { { "_id", 1 }, { "x", 2 } },
new BsonDocument { { "_id", 2 }, { "x", 1 } }
};
var newTags = originalTags.OrderBy(t => t.AsBsonDocument["x"]);
foreach (var tag in newTags) {
Console.WriteLine(tag.ToJson());
}