linq to sql返回布尔值

时间:2012-10-12 16:00:05

标签: c# linq-to-sql

我有一个包含以下列

的表Fruits
UserID | FruitID

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

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

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

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

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

感谢。

2 个答案:

答案 0 :(得分:15)

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

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

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

答案 1 :(得分:12)

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

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