代码之家  ›  专栏  ›  技术社区  ›  Mike

使用Linq向SQL返回单个值

  •  14
  • Mike  · 技术社区  · 16 年前

    我正在学习Linq到SQL,但很难掌握它。我试图用Linq查询在C#中简单地返回一个(布尔)值。

    我想看看故事的所有者是否希望在添加新评论时发送电子邮件通知。我希望包含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;
    
    4 回复  |  直到 16 年前
        1
  •  29
  •   Joey Gumbo    16 年前

    .Single() , .SingleOrDefault() .First() .FirstOrDefault()

    他们在做什么方面略有不同。 Single() SingleOrDefault() 只有在有的情况下才能工作 确切地 结果中有一个记录。 First() FirstOrDefault()

    *OrDefault()

        2
  •  9
  •   Justin Niessner    16 年前
    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.
    
        3
  •  4
  •   Necro    14 年前
    var notify = (from s in db.AccountSettings
                  where s.UserName == username
                  select s.NotifyOnComment).Count();
    
    return  Convert.ToBoolean(notify);
    
        4
  •  1
  •   bruno conde    16 年前

    如果你只期待一个结果,那就使用 Single SingleOrDefault First FirstOrDefault .