我正在尝试按嵌入文档中的值排序结果。
考虑如下模型:
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; }
}
我正在尝试查询我的Car
集合,并按Passenger.Age命令
我的查询类似于:
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 :(得分:2)
您可以使用AsQueryable()
重新编写此代码,以便从IEnumerable
返回ToList()
集合,然后您可以从中使用任何想要使用的LINQ进一步查询,而不仅仅是MongoCollection
:
var passengers = _db.GetCollection<Car>("car").AsQueryable().ToList()
.Where(car => car.Name == "Ford")
.SelectMany(ford => ford.Passengers)
.OrderBy(p => p.Age);
您可以在此处找到directly supported LINQ operations for the MongoDb C# driver。