linq-to-sql .All()或.Any()查找符合条件的所有项目

时间:2013-02-05 04:59:29

标签: c# linq linq-to-sql

我有一个看起来像这样的表:

| FruitID | BasketID | FruitType |
|   23    |    2     |    1      |
|   24    |    5     |    1      |  
|   25    |    2     |    1      |
|   26    |    5     |    2      |

我正在编写一个查询,其中我正在传递BasketIDs列表,我想要找回一个新的BasketIDs列表,其中只包含FruitID的所有内容FruitTypes等于1.例如,如果我传入BasketIDs 2和5,我只返回2,因为第5篮子的FruitID 26是FruitType 2。

这就是我所拥有的:

var TheQuery = (from f in MyDC.TableFruits
                where TheListOfBasketIDs.Contains(f.BasketID) &&
                // need help here 
                select f.BasketID).ToList();

感谢您就如何编写过滤器提出建议。

1 个答案:

答案 0 :(得分:5)

BasketID分组水果,以验证来自购物篮的所有水果的FruitType等于1

var TheQuery = (from f in MyDC.TableFruits                  
                group f by f.BasketID into g
                where TheListOfBasketIDs.Contains(g.Key) &&
                      g.All(x => x.FruitType == 1)
                select g.Key).ToList();