我正在使用在Visual Studio 2010中创建的SQL数据服务器。我想查看具有一些用户名的用户数。
var x = from u in db.UserInfoes
where
u.Password == password &&
u.Username == username
select count(*);
我的问题是数(*)。VS不接受这个。有没有办法写这个?
答案 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;