Facebook Sharer
选择您要替换的背景颜色:
【农历新年】背景图片:
个性化设定
 注册  找回密码
查看: 2544|回复: 10
打印 上一主题 下一主题

linq 能不能这样和 sesssion做compare ??

[复制链接]

4

主题

0

好友

476

积分

翡翠长老

Rank: 6Rank: 6Rank: 6Rank: 6Rank: 6Rank: 6

跳转到指定楼层
1#
发表于 2009-11-14 01:29 PM |只看该作者 |倒序浏览
var query1 = from u in context.User
                         where u.UserId == Session["UserId"]
                         select u;

vwd报错

我是可以转去string做compare..
只是想知道可不可以这样compare而已

[ 本帖最后由 我是大猪头 于 2009-11-14 01:30 PM 编辑 ]




收藏收藏0

4

主题

0

好友

476

积分

翡翠长老

Rank: 6Rank: 6Rank: 6Rank: 6Rank: 6Rank: 6

2#
发表于 2009-11-14 01:37 PM |只看该作者
还有这个
Object reference not set to an instance of an object.

int mDepartment = query1.FirstOrDefault().Department.DepartmentId;

那个query1是我的object User
我要抓object User里面的 objDepartment 里面的 primary key..
直接这样做不可以的哦?em0010


回复

使用道具 举报

4

主题

0

好友

476

积分

翡翠长老

Rank: 6Rank: 6Rank: 6Rank: 6Rank: 6Rank: 6

3#
发表于 2009-11-15 01:35 PM |只看该作者
请goodday哥指出我的错误
怎么总觉得我写的这段code很傻
Linq 新手 pai seh
我要用session里面User的departmentId对比
objleave里面foreign key userid的 Foreign key department Id
linq好像不能直接跨越两个obj拿去资料
所以我只好分成一个一个obj拿资料,可是他就出现了这个error

Unable to create a constant value of type 'Closure type'. Only primitive types ('such as Int32, String, and Guid') are supported in this context.
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: System.NotSupportedException: Unable to create a constant value of type 'Closure type'. Only primitive types ('such as Int32, String, and Guid') are supported in this context.

不懂是什么ERROR第一次看过


objLeaveBLL = new LeaveBLL(context);

            string sUser = Session["UserId"].ToString();
            string sRole = Session["UserRole"].ToString();

            var query1 = from u in context.User
                         where u.UserId == sUser
                         select u;
            var query2 = from D in context.Department
                         where D.DepartmentId == query1.FirstOrDefault().Department.DepartmentId
                         select D;

            int ManagerDepartmentId = query2.FirstOrDefault().DepartmentId;
            


            if (sRole == "Manager")
            {
                LeaveList = objLeaveBLL.GetLeaveByUserRole("Staff");
                grv_LeaveApprove.DataSource = LeaveList;
                grv_LeaveApprove.DataBind();

                var query3 = from L in LeaveList
                             where L.User.UserId == L.User.UserId
                             select L.User;

                var query4 = from D in context.Department
                             where D.DepartmentId == query3.FirstOrDefault().Department.DepartmentId
                             select D;                           
               
                if (ManagerDepartmentId == query4.FirstOrDefault().DepartmentId )
                {                    
                    LeaveList = objLeaveBLL.GetLeaveByLeaveApprove("ending");
                    grv_LeaveApprove.DataSource = LeaveList;
                    grv_LeaveApprove.DataBind();
                }
            }

请把我的错误点出来吧
感谢了

[ 本帖最后由 我是大猪头 于 2009-11-15 01:41 PM 编辑 ]


回复

使用道具 举报

4

主题

0

好友

476

积分

翡翠长老

Rank: 6Rank: 6Rank: 6Rank: 6Rank: 6Rank: 6

4#
发表于 2009-11-15 01:45 PM |只看该作者
怎么没人来指教一下。。。


回复

使用道具 举报

13

主题

0

好友

2113

积分

白金长老

Rank: 10

5#
发表于 2009-11-15 08:21 PM |只看该作者
原帖由 我是大猪头 于 2009-11-14 01:29 PM 发表
var query1 = from u in context.User
                         where u.UserId == Session["UserId"]
                         select u;

vwd报错

我是可以转去string做compare..
只是想知道可不 ...


你还搞不清楚 boxing  /  unboxing

var query1 = from u in context.User
                         where u.UserId == Session["UserId"]
                         select u;

var query1 = from u in context.User
                         where u.UserId == Session["UserId"].ToString()
                         select u;

var query1 = from u in context.User
                         where u.UserId == (int)Session["UserId"]
                         select u;

2008 的 新type

int?
double?
bool?

都是nullable 的

自己要unboxing
因为 int?  != int

自己要转  (int)Session["UserID"]; <-- boxing/unboxing
or
Convert.ToInt32(Session["UserID"]); <-- objecting
or
int.Parse(Session["UserID"]);<--boxing/unboxing
or
DirectCast(Session["UserID"],int);<-- objecting

Linq 比较特别

u.UserId equal Session["UserId"] // equal ref system.linq

自己练习多了 就会分别


回复

使用道具 举报

13

主题

0

好友

2113

积分

白金长老

Rank: 10

6#
发表于 2009-11-15 08:24 PM |只看该作者
Object reference not set to an instance of an object.

上面的是 少了

dbcontext db = new dbcontext;

你没 initialize 你要用的object

用new  阿






var query2 = from D in context.Department
                         where D.DepartmentId == query1.FirstOrDefault().Department.DepartmentId
                         select D;


这个够乱来的
能跑吗??


你的query1 的 declaration 呢??


回复

使用道具 举报

4

主题

0

好友

476

积分

翡翠长老

Rank: 6Rank: 6Rank: 6Rank: 6Rank: 6Rank: 6

7#
发表于 2009-11-15 09:34 PM |只看该作者
原帖由 goodday 于 2009-11-15 08:24 PM 发表
Object reference not set to an instance of an object.

上面的是 少了

dbcontext db = new dbcontext;

你没 initialize 你要用的object

用new  阿






var query2 = from D in context ...


paiseh我真的是写到有点傻了


回复

使用道具 举报

4

主题

0

好友

476

积分

翡翠长老

Rank: 6Rank: 6Rank: 6Rank: 6Rank: 6Rank: 6

8#
发表于 2009-11-15 10:52 PM |只看该作者
原帖由 goodday 于 2009-11-15 08:21 PM 发表


你还搞不清楚 boxing  /  unboxing

var query1 = from u in context.User
                         where u.UserId == Session["UserId"]
                         select u;

var query1 = from ...


haiz,看来我还需要多加努力啊


回复

使用道具 举报

13

主题

0

好友

2113

积分

白金长老

Rank: 10

9#
发表于 2009-11-16 12:45 AM |只看该作者
我觉得你 因该由
ado.net 进手

因为 linq 和 entity 是 oop 的基础要很深

你的 oop 还有进步的空间

否则你现在很乱 咯

一点意见咯
你如果觉得很麻烦
那你就会想懒得方法在ado.net

慢慢的你就会 oop 的 咯哦

oop 也是 写一次 懒很多的 又好管理的

下来你会了 oop 就
会要学 “大话设计模式”  的 factory mode   咯



回复

使用道具 举报

4

主题

0

好友

476

积分

翡翠长老

Rank: 6Rank: 6Rank: 6Rank: 6Rank: 6Rank: 6

10#
发表于 2009-11-16 12:50 AM |只看该作者
原帖由 goodday 于 2009-11-16 12:45 AM 发表
我觉得你 因该由
ado.net 进手

因为 linq 和 entity 是 oop 的基础要很深

你的 oop 还有进步的空间

否则你现在很乱 咯

一点意见咯
你如果觉得很麻烦
那你就会想懒得方法在ado.net

慢慢的你就 ...



只能说我没基础
可以说是想要想从高处开始爬起,结果必须爬回起跑点再慢慢爬上去
其实一开始我也不懂linq是什么。。
只是我senior叫我学新的东西我就学咯
经常看到ado.net这个字眼我也不懂是什么来的
大话设计程式,没时间看啊haiz,做project做到没时间看
而且pdf 真的很难看
等这个project过了之后再慢慢理解大话设计程式的精髓吧

[ 本帖最后由 我是大猪头 于 2009-11-16 12:53 AM 编辑 ]


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

JBTALKS.CC |联系我们 |隐私政策 |Share

GMT+8, 2025-1-10 01:31 AM , Processed in 0.114453 second(s), 26 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

Ultra High-performance Dedicated Server powered by iCore Technology Sdn. Bhd.
Domain Registration | Web Hosting | Email Hosting | Forum Hosting | ECShop Hosting | Dedicated Server | Colocation Services
本论坛言论纯属发表者个人意见,与本论坛立场无关
Copyright © 2003-2012 JBTALKS.CC All Rights Reserved
合作联盟网站:
JBTALKS 马来西亚中文论坛 | JBTALKS我的空间 | ICORE TECHNOLOGY SDN. BHD.
回顶部