计数(*)的SQL语句问题

时间:2013-07-30 13:31:17

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

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

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

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

5 个答案:

答案 0 :(得分:4)

你也可以这样做:

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

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

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

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

任何会比count更快,因为它会在找到匹配后立即返回true,而不是通过整个表来确保精确计数。

答案 1 :(得分:3)

你必须依靠返回的收藏。

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

答案 2 :(得分:2)

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

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

答案 3 :(得分:1)

使用扩展方法,

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

答案 4 :(得分:0)

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

使用

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