刚刚接触.net,要做一个登陆界面,很多东西不了解,只好自己想办法先从数据库中密码,在进行验证,可是不懂怎么用linq查询语句把结果转成字符串.....大家帮忙看下该怎么改,我就那么多分了,求老师们帮忙啊
public string GetPass(string UserName)
{
var password = from m in db.用户
where m.UseName.Equals(UserName)
select m.Password;
string pass = password.ToString();
return pass;
}
// 获取密码的方法
public string GetPass(string UserName)
{
// dataContext是生成的LINQ to SQL Class或ADO.NET Entity Data Model(EF), 里面会包括你的Users实体
var password = from m in dataContext.Users
where m.UseName.Equals(UserName)
select m.Password;
return password.FirstOrDefault(); // 如果返回null表示没有该用户名或密码为null
}
// 最简单的验证方式
public bool VerifyPassword(string UserName, string Password)
{
return dataContext.Customers.Where(c => c.UserName.Equals(UserName) && c.Password.Equals(Password)).Any();
//或者
return dataContext.Customers.Any(c => c.UserName.Equals(UserName) && c.Password.Equals(Password));
}
你要弄明白的是你这里password是一个集合,不能直接用password.ToString();的,可以改为:
var password = from m in db.用户
where m.UseName.Equals(UserName)
select m.FirstOrDefault().Password;
var password = from m in db.用户
where m.UseName.Equals(UserName)
select m.Password.FirstOrDefault();
是改成这样吧 不过好像还是不行啊......
@恶有饿报: 不是的哦,是
m.FirstOrDefault().Password;
@artwl: 那我是少了什么命名空间么 我的FirstOrDefault()只出现在Password后面
@恶有饿报: 可能是我记错了,你这样写吧,效果是一样的:
var password = from m in db
where m.UseName.Equals(UserName)
select m.Password;
string pass = password.FirstOrDefault();
return pass
@artwl: 刚才写错了,应该是这样:
var password = from m in db.用户
where m.UseName.Equals(UserName)
select m.Password;
string pass = password.FirstOrDefault();
return pass
@artwl: 程序可以跑起来了吗?
这样写也有缺陷的,如果用户名不存在就会出错,所以最好对password 做个是否为空的判断
@artwl: 谢谢了 解决了
建议这样做,省时省力。直接用密码和用户名查询数据库中是否存在。
bool iValid = db.用户.Any(m => m.UseName.Equals(UseName) && m.Password.Equals(Password));
public string GetPass(string UserName)
{
string pass = (from m in db.用户
where m.UseName == UserName
select m.Password).FirstOrDefault();
return pass;
}