linq to sql返回布尔值

fre*_*hie 4 c# linq-to-sql

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

UserID | FruitID
Run Code Online (Sandbox Code Playgroud)

我想验证UserID是否已在FruitID上获得授权,所以我写的是这样的:

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

因此,如果用户被授权,则查询返回ID,如果未经授权,则返回null.然后我检查返回值是否为null,然后根据返回的值设置bool.

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

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

谢谢.

Dar*_*rov 15

var IsAuthorized = from (f in MyDC.Fruits
                         where f.UserID == TheUserID && f.FruitID == TheFruitID
                         select f.FruitID).SingleOrDefault() != null;
Run Code Online (Sandbox Code Playgroud)

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

var IsAuthorized = MyDC
    .Fruits
    .Any(f => f.UserID == TheUserID && f.FruitID == TheFruitID);
Run Code Online (Sandbox Code Playgroud)


Ale*_*pin 12

如果源序列包含任何元素,Any()将返回true; 否则,错误.

var IsAuthorized = from (f in MyDC.Fruits
                             where f.UserID == TheUserID && f.FruitID == TheFruitID
                             select f.FruitID).Any();
Run Code Online (Sandbox Code Playgroud)