【问题标题】:Linq Join one to many AND CriteriaLinq 加入一对多 AND 标准
【发布时间】:2012-06-06 09:34:11
【问题描述】:
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 中选择 ProductID,其中 蓝色和红色? 如何编写正确的 Linq 查询?

【问题讨论】:

标签: linq join one-to-many


【解决方案1】:

假设您在数据库表上有关系,这样的事情应该可以工作:

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)

【讨论】:

  • List 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();如何 PredicateBuilder 多条件?
【解决方案2】:
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 查询?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-03-25
    • 2022-01-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多