LINQ и отношения «многие ко многим»

Итак, я пишу «динамический» запрос Linq. Я создал класс «options», который содержит все динамические параметры, которые могут быть частью запроса. Некоторые из этих свойств параметров являются объектами List, которые содержат идентификаторы сущностей, которые я хочу вернуть и которые являются частью отношений «многие ко многим» в SQL Server. Быстрый пример кода и описания таблиц могут помочь (серьезно сокращены для краткости).

Table Cars: Id int PK, Модель varchar (50), Год int

Цвета таблицы: Id int PK, Имя varchar (50)

Таблица CarsXColors: CarId int PK, ColorId int PK

public IEnumerable<Car> Search(SearchOptions options)
{
    var query = from car in ctx.Cars select car;

    // This works just fine
    if (options.MaxMileage.HasValue) query = query.Where(x => x.Mileage <= options.Mileage.Value);

    // How do I implement this pseudo code. options.Colors is a List<int>
    if (options.Colors.Count > 0)
    {
        query = query.Where(  -- select cars that are in the List<int> of colors --);
    }


    return query;
}
5
задан Eric Renouf 20 May 2015 в 01:04
поделиться