2012-06-06 37 views
0
Product 
+------------+-------------+------------+ 
| PID  | Name  | Model  | 
+------------+-------------+------------+ 
|   1 | Mercedes | xyz  | 
|   2 | Audi  | yxz  | 
|   3 | BMW   | zyx  | 
+------------+-------------+------------+ 


ProductColor 
+------------+-------------+------------+ 
| ID   | ProductID | Color  | 
+------------+-------------+------------+ 
|   1 | 1   | Red  | 
|   2 | 1   | Blue  | 
|   3 | 3   | Blue  | 
+------------+-------------+------------+ 

我需要从ProductColor中选择产品ID,其中蓝色和红色?如何编写正确的Linq查询?Linq加入一对多AND标准

+0

你到目前为止尝试过什么?你能提供你的课程的例子吗? – Richard

+0

[我如何检索用linq中所有提供的标签标记的项目?](http://stackoverflow.com/questions/3478874/how-do-i-retrieve-items-that-are-tagged (x => x.ProductColors.Where(y => y.Color ==“blue”)。选择(所有提供的标签在LINQ) –

回答

0

假设你对数据库表的关系,这样的事情应该工作:

C#:

var ProductIDs = ctx.Products.Where(p => p.Color.Contains("Red") && 
    p.Color.Contains("Blue")).Select(p => p.PID) 

VB:

Dim ProductIDs = ctx.Products.Where(function(p) p.Color.Contains("Red") And 
    p.Color.Contains("Blue")).Select(function(p) p.PID) 
+0

列表 Pr = data.Products.Where (z => z.ProductID).Contains(x.ID)&& x.ProductColors.Where(y => y.Color ==“red”)。Select(z => z.ProductID).Contains(x.ID) ).ToList();如何预测Builder多标准? – user1439338

0
List<Product> Pr= data.Products.Where(x=> x.ProductColors.Where(y=> 
y.Color=="blue").Select(z=> z.ProductID).Contains(x.ID) && 
x.ProductColors.Where(y=> y.Color== "red").Select(z=> 
z.ProductID).Contains(x.ID)).ToList() 

绿色
黄色
n

如何使用多标准linq查询?