我在DB中有三个表:
产品
+----+------+
| id | name |
+----+------+
| 1 | prod1|
+----+------+
值
+----+---------+---------+
| id | value | alias |
+----+---------+---------+
| 1 | 10 g | 10m |
+----+---------+---------+
prdoucts_values
+---------------+---------+
| product_id | value_id|
+---------------+---------+
| 1 | 1 |
+---------------+---------+
如何从数据库中选择具有List<Values.alias>
的任何值的所有产品?
答案 0 :(得分:1)
List<decimal> aliases = ...
var query = db.Products.Where(p => p.Values.Any(v => aliases.Contains(v.Alias)));
或(如果您没有导航属性)
var query = from p in db.Products
join pv in db.ProductsValues on p.ProductId equals v.ProductId
join v in db.Values on pv.ValueId equals v.ValueId into values
where values.Any(v => aliases.Contains(v.Alias))
select p
答案 1 :(得分:0)
如果您使用EF(数据库优先),则表prdoucts_values
不是概念模型的一部分。
相反,EF为您提供从Products
到Values
的直接路径
因此,您可以编写如下所示的查询:
var lst = new List<Products>();
lst = db.Products.Where(c => c.Values.Any()).ToList();