首页 新闻 会员 周边 捐助

linq查询数据库中数据

0
悬赏园豆:10 [已解决问题] 解决于 2013-07-21 22:09
            var sName = Request.Form["userName"];
            var sPwd = Request.Form["userPwd"];

            var fUser = from s in spDB.AccountsInfo
                        where s.LoginName==sName && s.LoginPwd==sPwd
                        select s;            

是这样,AccountsInfo是我建好的表(已经有测试数据),也是MVC项目下的一个模型类,Form表单提交过来用户名,密码信息去和数据库中信息比对,有的话提取出这个AccountsInfo对象--

但是获取的fUser不是我期望的结果,请教:我这种写法有问题吗?

问题补充:

调试跟踪到fUser发现fUser是:

SELECT
[Extent1].[AccountID] AS [AccountID],
[Extent1].[LoginName] AS [LoginName],
[Extent1].[LoginPwd] AS [LoginPwd]
FROM [dbo].[AccountsInfo] AS [Extent1]
WHERE ([Extent1].[LoginName] = @p__linq__0) AND ([Extent1].[LoginPwd] = @p__linq__1)

但我sName和sPwd的值都传过来了啊,而且鼠标放到linq语句的sName,sPwd上也有值,为什么跟踪后是@p__linq__0与@p__linq__1?

巴维尔的主页 巴维尔 | 初学一级 | 园豆:61
提问于:2013-07-20 10:29
< >
分享
最佳答案
0
AccountsInfo 为Model
AccountsInfo fUser = (from s in spDB.AccountsInfo where s.LoginName==sName && s.LoginPwd==sPwd select s).FirstOrDefault();
收获园豆:7
web王 | 菜鸟二级 |园豆:225 | 2013-07-21 01:18

懂我者,web王也!多谢!

巴维尔 | 园豆:61 (初学一级) | 2013-07-21 22:08
其他回答(4)
0

这个方法可能获取的不完整 。http://www.cnblogs.com/QLJ1314/archive/2012/08/04/Linq.html  你看一下 这个是之前我写过的一个小程序,希望对你有所帮助

收获园豆:1
妍珊 | 园豆:1169 (小虾三级) | 2013-07-20 11:02

 妍珊同学的小程序已经看过了,学习了--我的问题还是没有解决,有兴趣再看看补充问题,谢谢帮助!

支持(0) 反对(0) 巴维尔 | 园豆:61 (初学一级) | 2013-07-20 15:39
0

这个语句被翻译成:select * from AccountsInfo where LoginName='...' and LoginPwd='...',

看起来应该是你需要的结果啊~

还可以这样写:var fUser=spDB.AccountsInfo.SingleOrDefault(m=>m.LoginName=sName && m.LoginPwd=sPwd);

这个和上句类似。

使用LingToSql,给你推荐两个工具:LinqPad,Sql Profiler(SQL管理器自带)

收获园豆:1
幻天芒 | 园豆:37207 (高人七级) | 2013-07-20 11:03

多谢老兄推荐的工具!--你的写法和一楼的写法还有我的写法我都有试过,效果一样的,断点跟踪都是我补充提问中显示的语句,可能另有玄机--

谢谢帮助!

支持(0) 反对(0) 巴维尔 | 园豆:61 (初学一级) | 2013-07-20 15:37

@巴维尔: 你提问中补充的语句是正常的。那是参数化的写法。

支持(0) 反对(0) 幻天芒 | 园豆:37207 (高人七级) | 2013-07-20 16:37
0

你的写法没什么问题

主要是你期望的结果,AccountsInfo是否能提供

Yu | 园豆:12990 (专家六级) | 2013-07-20 11:38
0
var fUser = from s in spDB.AccountsInfo
                        where s.LoginName==sName && s.LoginPwd==sPwd
                        select s;  
你这样写查询到的是实体模型吧。看你想要什么。可以
select new
{
username=s.对应的字段,
...



}
收获园豆:1
bos_kg | 园豆:7 (初学一级) | 2013-07-20 19:31
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册