4

我有一个Fruits包含以下列的表

UserID | FruitID

我想验证用户 ID 是否在 FruitID 上获得授权,所以我正在编写如下内容:

var IsAuthorized = (from f in MyDC.Fruits
                    where f.UserID == TheUserID && f.FruitID == TheFruitID
                    select f.FruitID).SingleOrDefault();

因此,如果用户被授权,则查询返回一个 ID,如果他没有被授权,则返回 null。然后我检查返回值是否为空,然后根据返回值设置一个布尔值。

我想要做的是返回 bool:如果用户被授权,那么它应该返回 true。

如何修改查询以返回布尔值?

谢谢。

4

2 回答 2

15
var IsAuthorized = from (f in MyDC.Fruits
                         where f.UserID == TheUserID && f.FruitID == TheFruitID
                         select f.FruitID).SingleOrDefault() != null;

或者如果您希望由底层 LINQ 提供程序完成此操作(例如,如果您使用 SQL 服务器),您可以使用.Any更好的扩展方法:

var IsAuthorized = MyDC
    .Fruits
    .Any(f => f.UserID == TheUserID && f.FruitID == TheFruitID);
于 2012-10-12T16:01:13.957 回答
13

如果源序列包含任何元素,则 Any() 返回 true;否则为假。

var IsAuthorized = from (f in MyDC.Fruits
                             where f.UserID == TheUserID && f.FruitID == TheFruitID
                             select f.FruitID).Any();
于 2012-10-12T16:02:37.490 回答