2015-10-16 48 views
0

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

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

您的'Comb'对象看起来就像'Car'对象。如果你创建一个'Car'对象的列表呢? – juharr

+0

嗨Juharr,伟大的提示,我试了一下。我很害怕它给了我LinqToSql相同的错误:*无法创建一个'Example.Car'类型的常量值。在这种情况下,只支持原始类型或枚举类型。* –

回答

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

这会引发相同的异常。 –

相关问题