-3

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

UserID | FruitID
  4    |    34
  4    |   4355
  4    |   652
  5    |   5677
  5    |    562
  4    |    562

现在,我正在传递一个 UserID 和一个 FruitID,如下所示:

var IsAuthorized = MyDC.FruitTable
                       .Any(f => f.UserID == TheUserID && 
                                 f.FruitID == TheFruitID);

这将返回一个布尔值。现在我想为 FruitID 列表写同样的东西:我传入一个 UserID 和几个 FruitID,我想要一个表示 . 的布尔值"ALL the FruitIDs have a UserID == to the TheUserID"

请注意,如果列表仅包含一个与 FruitID == f.FruitID && f.UserID == UserID 不匹配的元素,则整个列表的返回值应为 false。

如何重写查询以获取 FruitID 列表?

4

2 回答 2

5

留下您的示例代码无法编译的事实,我怀疑您想要类似的东西:

// Here fruitIDs is a List<int> for the "target" fruit IDs
var isAuthorized = MyDC.FruitTable
                       .Where(u => fruitIDs.Contains(u.FruitID))
                       .All(u => u.UserID == TheUserID);

这将检查水果 ID 在给定列表中的每个条目是否与指定的用户 ID 匹配。当然,还有其他的写法。

不会检查原始集合中的每个条目是否具有有效的水果 ID。从这个问题中不清楚这是否是目标......

于 2012-10-15T16:07:12.663 回答
1

使用 listVariable.Contains(...)

        MyDC.FruitTable
                   .Where(x => x.UserID == TheUserID)
                   .All(x => listOfFruitIds.Contains(x.FruitID));
于 2012-10-15T16:07:09.220 回答