Итак, я пишу «динамический» запрос 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;
}