C# OrderBy嵌入文档

C# OrderBy嵌入文档,c#,mongodb,mongodb-.net-driver,C#,Mongodb,Mongodb .net Driver,我正试图按照嵌入文档中的值对结果进行排序 考虑一个模型,例如: public class Car { public Guid ID { get; set; } public string Name { get; set; } public IEnumerable<Passenger> Passengers { get; set; } } public class Passenger { public Guid ID { get; set; }

我正试图按照嵌入文档中的值对结果进行排序

考虑一个模型,例如:

public class Car
{
    public Guid ID { get; set; }
    public string Name { get; set; }

    public IEnumerable<Passenger> Passengers { get; set; }
}

public class Passenger
{
    public Guid ID { get; set; }
    public virtual string Name { get; set; }
    public virtual int Age { get; set; }
}
这样,我得到了以下异常:

不支持SelectMany查询运算符

这是可以理解的C#mongo驱动程序的一个限制。
有解决办法吗


如果不行,我怎么能在.ToList()之后订购呢?

您可能可以使用
AsQueryable()
重新编写它,从
ToList()
返回
IEnumerable
集合,然后您可以使用任何想要使用的LINQ进行进一步查询,不仅仅是MongoCollection直接支持的操作:

var passengers = _db.GetCollection<Car>("car").AsQueryable().ToList()
    .Where(car => car.Name == "Ford")
    .SelectMany(ford => ford.Passengers)
    .OrderBy(p => p.Age);
var passengers=\u db.GetCollection(“car”).AsQueryable().ToList()
.Where(car=>car.Name==“福特”)
.SelectMany(福特=>福特乘客)
.OrderBy(p=>p.Age);

你可以在这里找到答案。

如果我说你试图从你的结果中找出汽车物体和乘客物体,我理解正确吗?我相信他正在试图按年龄列出福特汽车所有乘客的名单。
var passengers = _db.GetCollection<Car>("car").AsQueryable().ToList()
    .Where(car => car.Name == "Ford")
    .SelectMany(ford => ford.Passengers)
    .OrderBy(p => p.Age);