Итак, я пишу «динамический» запрос Linq. Я создал класс «options», который содержит все динамические параметры, которые могут быть частью запроса. Некоторые из этих свойств опций являются объектами List, которые содержат идентификаторы сущностей, которые я хочу вернуть и которые являются частью отношений многие ко многим в SQL Server. Краткий пример кода и описания таблиц могут помочь (серьезно сокращены для краткости).
Настольные машины:
Id int PK,
Модель varchar (50),
Год обучения
Цвета стола:
Id int PK,
Имя варчар (50)
Настольные автомобилиXЦвета:
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;
}