首页 新闻 搜索 专区 学院

关于LINQ的问题

0
悬赏园豆:10 [已解决问题] 解决于 2012-04-04 23:10

我设计了一个节目,上面想通过输入公式名称,获得该公司的信息,然后赋值给表单的TEXTBOX等控件,但是总是提示我错误。

 

Retrieve Button 的coding

View Code
 1   protected void B_Retrieve_Click(object sender, EventArgs e)
2 {
3 SearchCorp ();
4 TB_CorpNumber.Focus ();
5
6 }
7 private void SearchCorp()
8 {
9 // 判定是否为空。
10 if ( AjaxControl.Ajax_VerifyTextBoxEmpty ( UpdatePanel1, Session["Site"].ToString (), Session["LoginUserID"].ToString (), TB_CorpName, TB_CorpName.Text, true ) )
11 return;
12
13 // 取得值给表单填充
14 string gsmc = TB_CorpName.Text.Trim();
15
16 IQueryable<Org_Corporation> company = from c in db.Org_Corporation
17 where c.CorpName == TB_CorpName.Text
18 select c ;
19
20
21 foreach ( var item in company )
22 {
23 TB_CorpName.Text = item.CorpName;
24 TB_CorpNumber.Text = item.CorpNumber;
25 TB_Suerior_CorpID.Text = item.Superior_CorpID.ToString ();
26 TB_Corp_Acronyms.Text = item.Corp_Acronyms;
27 if ( item.Status == "1" )
28 {
29 CB_Status.Checked = true;
30 }
31 else
32 {
33 CB_Status.Checked = false;
34 }
35
36 }
37
38
39
40
41 }


 

指定的转换无效。

说明: 执行当前 Web 请求期间,出现未经处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。
异常详细信息: System.InvalidCastException: 指定的转换无效。
源错误:

行 108:行 109:行 110:      foreach ( var item in company )行 111:      {行 112:          TB_CorpName.Text = item.CorpName;

源文件: e:\ETS\OR_Corption.aspx.cs    行: 110
堆栈跟踪:

[InvalidCastException: 指定的转换无效。]   System.Data.SqlClient.SqlBuffer.get_Int32() +6345828   Read_Org_Corporation(ObjectMaterializer`1 ) +405   System.Data.Linq.SqlClient.ObjectReader`2.MoveNext() +42   OR_Corption.SearchCorp() in e:\ETS\OR_Corption.aspx.cs:110   OR_Corption.B_Retrieve_Click(Object sender, EventArgs e) in e:\ETS\OR_Corption.aspx.cs:92   System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument) +154   System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +3707
figofeng的主页 figofeng | 初学一级 | 园豆:5
提问于:2012-04-04 22:27
< >
分享
最佳答案
0

你在这一行:

TB_CorpName.Text = item.CorpName;
断点调试一下,看看为什么出错
另外:
1、在foreach运行前最好把 IQueryable 转换为 IEnumerable(如List)类型
2、你这里用foreach的话后面的值不是会覆盖前面的值吗
收获园豆:10
artwl | 专家六级 |园豆:16526 | 2012-04-04 22:45

先回答问题1,我这个取出来的就是一条记录,我原来想生成一个类Org_Corporation 的对象,然后直接给textbox 控件赋值,但是也不行。所以我只能用循环了,尽管只有一条,虽然有些傻,但是好像很多例子都这样做的。

 

问题1。关于IQueryable &IEnumerable  区别没有搞明白,呵呵,我刚接触LINQ 所以还需要学习。

figofeng | 园豆:5 (初学一级) | 2012-04-04 22:49
其他回答(1)
0

原来是字段类型的问题,我在数据库里面定义的CORPID的类型是BIGINT ,在实体类里面定义的是INT ,呵呵,原来这样是不可以的。郁闷,这个问题困扰我好几天。

figofeng | 园豆:5 (初学一级) | 2012-04-04 23:09
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册