1

我在 DB 中有三个表,如下所示:

产品

+----+------+
| id | name |
+----+------+
| 1  | prod1|
+----+------+

价值观

+----+---------+---------+
| id | value   |  alias  | 
+----+---------+---------+
| 1  |  10 g   |  10m    |
+----+---------+---------+

产品值

+---------------+---------+
|  product_id   | value_id| 
+---------------+---------+
|      1        |  1      | 
+---------------+---------+

如何从 DB 中选择所有具有任何价值的产品List<Values.alias>

4

2 回答 2

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
于 2013-02-22T09:10:40.633 回答
0

如果您使用的是 EF(数据库优先),则该表prdoucts_values不是概念模型的一部分。

相反,EF 为您提供了从Productsto的直接路径Values 因此您可以编写如下所示的查询:

var lst = new List<Products>();
lst = db.Products.Where(c => c.Values.Any()).ToList();
于 2013-02-22T09:27:20.290 回答