2012-07-11 5 views
2

Я пытаюсь заказать мои результаты по значению во встроенном документе.Вложенные документы 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; } 
} 

Я пытаюсь запросить мою 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 не поддерживается.

Это, по понятным причинам, ограничение драйвера Mongo C#.
Есть ли обходной путь?

Несоблюдение этого, как я могу заказать их после моего .ToList()?

+0

Правильно ли я понимаю вас, если я говорю, что вы пытаетесь получить как объект Car, так и объект Passanger из вашего результата? –

+0

Я считаю, что он пытается получить список всех пассажиров в Фордах, по возрасту. –

ответ

2

Вы можете, вероятно, перепишем это с AsQueryable(), чтобы получить IEnumerable коллекцию из ToList() назад, из которого вы можете дополнительно запрос с любым LINQ вы хотите использовать, а не только операции, непосредственно поддерживаемых MongoCollection:

Здесь вы найдете directly supported LINQ operations for the MongoDb C# driver.

Смежные вопросы