首页 新闻 会员 周边

linq查询怎么把查询结果转为字符串?新手经常碰壁,大家帮帮忙啊...

1
悬赏园豆:180 [已解决问题] 解决于 2011-11-25 19:42

刚刚接触.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;
}

_但丁的主页 _但丁 | 初学一级 | 园豆:38
提问于:2011-11-25 13:51
< >
分享
最佳答案
0
        // 获取密码的方法
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));
}
收获园豆:30
Life a Poem | 菜鸟二级 |园豆:437 | 2011-11-25 15:47
其他回答(4)
1

你要弄明白的是你这里password是一个集合,不能直接用password.ToString();的,可以改为:

var password = from m in db.用户
where m.UseName.Equals(UserName)
select m.FirstOrDefault().Password;



收获园豆:90
artwl | 园豆:16736 (专家六级) | 2011-11-25 14:06
var password = from m in db.用户
where m.UseName.Equals(UserName)
select m.Password.FirstOrDefault();
是改成这样吧  不过好像还是不行啊......
支持(0) 反对(0) _但丁 | 园豆:38 (初学一级) | 2011-11-25 14:16

@恶有饿报: 不是的哦,是

m.FirstOrDefault().Password;
支持(0) 反对(0) artwl | 园豆:16736 (专家六级) | 2011-11-25 14:20

@artwl: 那我是少了什么命名空间么  我的FirstOrDefault()只出现在Password后面  

支持(0) 反对(0) _但丁 | 园豆:38 (初学一级) | 2011-11-25 14:27

@恶有饿报: 可能是我记错了,你这样写吧,效果是一样的:

var password = from m in db
where m.UseName.Equals(UserName)
select m.Password;
string pass = password.FirstOrDefault();
return pass



支持(0) 反对(0) artwl | 园豆:16736 (专家六级) | 2011-11-25 14:34

@artwl: 刚才写错了,应该是这样:

var password = from m in db.用户
where m.UseName.Equals(UserName)
select m.Password;
string pass = password.FirstOrDefault();
return pass
支持(0) 反对(0) artwl | 园豆:16736 (专家六级) | 2011-11-25 14:40

@artwl: 程序可以跑起来了吗?

这样写也有缺陷的,如果用户名不存在就会出错,所以最好对password 做个是否为空的判断

支持(0) 反对(0) artwl | 园豆:16736 (专家六级) | 2011-11-25 14:50

@artwl:  谢谢了   解决了

支持(0) 反对(0) _但丁 | 园豆:38 (初学一级) | 2011-11-25 19:40
2

建议这样做,省时省力。直接用密码和用户名查询数据库中是否存在。

bool iValid = db.用户.Any(m => m.UseName.Equals(UseName) && m.Password.Equals(Password));
收获园豆:30
LCM | 园豆:6876 (大侠五级) | 2011-11-25 15:23
0
public string GetPass(string UserName)
{
string pass = (from m in db.用户
where m.UseName == UserName
select m.Password).FirstOrDefault();
return pass;
}
收获园豆:30
水牛刀刀 | 园豆:6350 (大侠五级) | 2011-11-25 15:38
0

同意 Life a Poem 的。

悟行 | 园豆:12559 (专家六级) | 2011-11-25 16:59
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册