如何查找与Linq / SQL中的组合列表匹配的所有行?

时间:2015-10-16 19:18:42

标签: c# sql linq

示例对象

public class Car
{
     public int Doors { get; set; }
     public int Wheels { get; set; }
}

查找与列表匹配的所有汽车:

var list = new[] { 3, 4 };
var result = Db.Cars.Where( c => list.Contains(c.Doors) );

如何查找所有与车门和车轮的组合相匹配的车辆?我试过了:

var combinations = new[] { new Comb { Doors = 1, Wheels = 2 }, new Comb { doors = 5, wheels = 4 } };
var result = Db.Cars.Where( c => combinations.Contains(new Comb { Doors = c.Doors, Wheels = c.Wheels }) ) );

但当然这不起作用,给出以下错误:

无法创建“Example.Comb”类型的常量值。在此上下文中仅支持原始类型或枚举类型。

还有其他办法吗?

重要的是,组合的数量是未知的。

1 个答案:

答案 0 :(得分:0)

var result = Db.Cars.Where(c=>combinations.Any(comb=>comb.Doors==c.Doors && comb.Wheels==c.Wheels));