OrderBy嵌入式文档

问题描述:

我试图通过嵌入式文档中的值来排序我的结果。OrderBy嵌入式文档

考虑的模型,如:

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; } 
} 

我试图通过Passenger.Age查询我Car集合,为了

我的查询看起来是这样的:

var results = (from car in _db.GetCollection<Car>("car").AsEnumerable() 
       from passenger in car.Passengers 
       where car.Name == "Ford" 
       orderby passenger.Age).ToList(); 

有了这个,我得到以下例外:

不支持SelectMany查询运算符。

这可以理解为C#mongo驱动程序的限制。
是否有解决方法?

失败的是,我怎么能在我的.ToList()之后命令它们?

+0

我是否正确理解你,如果我说你试图从结果中获得Car对象和Passanger对象? – 2012-07-11 14:42:31

+0

我相信他试图按年龄列出所有福特乘客的名单。 – 2012-07-11 14:57:00

你或许可以重新写这与AsQueryable()ToList()得到IEnumerable收集回来,从中你可以用任何LINQ再进一步查询您要使用,而不仅仅是由MongoCollection直接支持的操作:

在这里你可以找到directly supported LINQ operations for the MongoDb C# driver