【问题标题】:Trouble with SQL statement for count(*)count(*) 的 SQL 语句出现问题
【发布时间】:2013-07-30 13:31:17
【问题描述】:

我正在使用在 Visual Studio 2010 中创建的 SQL 数据服务器。我想查看具有某些用户名的用户数。

var x = from u in db.UserInfoes
                        where
                        u.Password == password &&
                        u.Username == username
                        select count(*);

我的问题是count(*)。VS不接受这个。有没有办法写这个?

【问题讨论】:

    标签: .net sql visual-studio-2010 linq-to-sql


    【解决方案1】:

    你也可以这样做:

    var x = db.UserInfoes
        .Count(u => u.Password == password && u.Username == username);
    

    where 子句可以看作是多余的,因为您可以将过滤器(谓词)放在 Count() 方法中

    但是由于您正在检查 SINGLE 记录(假设只有一个用户匹配用户名和密码组合)您实际上想使用 ANY 方法并获取布尔值

    var x = db.UserInfoes
        .Any(u => u.Password == password && u.Username == username);
    

    any 会比 count 稍微快一点,因为它会在找到匹配项后立即返回 true,而不是遍历整个表来确保准确计数​​。

    【讨论】:

      【解决方案2】:

      您必须依靠退回的收藏。

      var x = (from u in db.UserInfoes
               where u.Password == password &&
                     u.Username == username
               select u).Count();
      

      【讨论】:

        【解决方案3】:

        其实你可以在 Count 扩展中设置谓词:

           var x = db.UserInfoes.Count(u => u.Password == password && u.Username == username)
        

        【讨论】:

          【解决方案4】:

          使用扩展方法,

          var x = db.UserInfoes
                    .Where(u => u.Password == password && u.Username == username)
                    .Count();
          

          【讨论】:

            【解决方案5】:
            var x = from u in db.UserInfoes
                    where u.Password == password &&
                          u.Username == username
                    select u;
            

            使用

            int i = (x != null) ? x.Count() : 0;
            

            【讨论】:

              猜你喜欢
              • 2019-11-20
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2011-04-23
              • 1970-01-01
              • 2010-09-25
              • 1970-01-01
              相关资源
              最近更新 更多