1

次のようなDBに3つのテーブルがあります。

製品

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

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

prdocts_values

+---------------+---------+
|  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 は to からの直接パスを提供します。ProductsしたがってValues 、次のようなクエリを記述できます。

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