db包含具有多对多关系的产品和颜色表。
因此,该产品具有IList<Colors>
属性。
例如,我创建了一个IList
,其中包含两个colors
,我希望获得products
此Colors
包含其他IList
的{{1}}。
这是可能的还是我应该首先获得所有产品,然后通过foreach
过滤它们?
产品:
public class Product
{
public Product()
{
Colors = new List<Color>();
}
public int Id { get; set; }
public string Name { get; set; }
public string Code { get; set; }
.
.
.
public virtual ICollection<Color> Colors { get; set; }
}
颜色
public class Color
{
public int Id { get; set; }
public string Name { get; set; }
public string HexCode { get; set; }
public virtual ICollection<Product> Products { get; set; }
}
现在我想要颜色ID为2或3的产品,这些数字是动态的
答案 0 :(得分:1)
假设您在列表colorIds
中有颜色ID,那么您可以
var query = from p in Products
where p.Colors.Any(c => colorIds.Contains(c.Id))
select p
这将返回至少所请求颜色的产品。如果您需要仅这些颜色的产品,您可以将Any
更改为All
。