我正在学习
Linq到sql,我很难把握它.我试图简单地返回一个单一(布尔)值在C#与一个Linq查询.
我想看看一个故事的所有者是否希望在添加新评论时发送电子邮件通知.我希望包含Linq to sql的方法返回一个布尔值.
public bool NotifyOnComment(string username){ var notify = (from s in db.AccountSettings where s.UserName == username select s.NotifyOnComment).DefaultIfEmpty(false); // clueless }
更新:
我现在在做以下事情:
var notify = (from s in db.AccountSettings where s.UserName == username select s.NotifyOnComment).SingleOrDefault(); return (bool)notify;
解决方法
Linq默认情况下始终返回集合.如果您需要一个值,您可以应用
.Single()
,.SingleOrDefault()
或
.First()
或
.FirstOrDefault()
方法.
他们做的不一样. Single()和SingleOrDefault()只有在结果中完全或最多有一条记录时才有效. First()和FirstOrDefault()将会工作,即使有更多的结果.
* OrDefault()变体将返回类型的默认值,以防结果不包含记录.