我有一个包含以下列
的表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。
如何修改查询以返回布尔值?
感谢。
答案 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();