所以我正在编写一个“动态”Linq查询。我创建了一个“选项”类,用于保存可以成为查询一部分的所有动态选项。其中一些选项属性是List对象,它们保存了SQL Server中许多对多关系的实体ID,我想返回这些实体。下面是一个简短的代码示例和表格描述(为了简洁起见)。
汽车表: Id int PK, Model varchar(50), Year int
颜色表: Id int PK, Name varchar(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;
}