2

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

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

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

4

5 回答 5

4

你也可以这样做:

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,而不是遍历整个表以确保准确计数​​。

于 2013-07-30T13:34:41.583 回答
3

您必须依靠退回的收藏品。

var x = (from u in db.UserInfoes
         where u.Password == password &&
               u.Username == username
         select u).Count();
于 2013-07-30T13:32:04.510 回答
2

实际上,您可以在 Count 扩展中设置谓词:

   var x = db.UserInfoes.Count(u => u.Password == password && u.Username == username)
于 2013-07-30T13:35:00.960 回答
1

使用扩展方法,

var x = db.UserInfoes
          .Where(u => u.Password == password && u.Username == username)
          .Count();
于 2013-07-30T13:32:11.457 回答
0
var x = from u in db.UserInfoes
        where u.Password == password &&
              u.Username == username
        select u;

利用

int i = (x != null) ? x.Count() : 0;
于 2013-07-30T13:35:35.947 回答