使用Linq将单个值返回到SQL

Mik*_*ike 14 linq asp.net asp.net-mvc linq-to-sql

我正在学习Linq to 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
    }
Run Code Online (Sandbox Code Playgroud)

更新:

我现在正在做以下事情:

var notify = (from s in db.AccountSettings
                      where s.UserName == username
                      select s.NotifyOnComment).SingleOrDefault();

        return (bool)notify;
Run Code Online (Sandbox Code Playgroud)

Joe*_*oey 29

默认情况下,Linq始终返回集合.如果你需要一个值,你可以申请的.Single(),.SingleOrDefault().First().FirstOrDefault()方法.

他们的所作所为略有不同.Single()并且SingleOrDefault()只有在结果中有完全最多一条记录时才会起作用.即使有更多的结果First(),FirstOrDefault()也会奏效.

*OrDefault()如果结果不包含记录,变量将返回该类型的默认值.


Jus*_*ner 9

var notify = (from s in db.AccountSettings
              where s.UserName == username
              select s.NotifyOnComment).DefaultIfEmpty(false).First();

//notify will either hold a bool or the AccountSettings object so
return (!(notify == false)); // Thanks Nick. Amazing what you'll do in a hurry.
Run Code Online (Sandbox Code Playgroud)