日期:2014-05-20  浏览次数:21014 次

Linq查询中的奇怪结果求助
string sa=Request.QueryString ["name"];//这是从前一个页面取到的值
this.lblLy.Text = sa;//同一个页面上有一个Lable控件,确实显示了sa存储的值:"A0003"
使用下面的查询,显示没有查到符合条件的记录:
var LYGongHaoSJ = from GongHsj in dtLy.AsEnumerable()
                          where
                           GongHsj.Field<string>("GongHao") ==sa
                          select GongHsj;
如果直接将查询条件中的变量sa改为常量,能查到16条记录:
var LYGongHaoSJ = from GongHsj in dtLy.AsEnumerable()
                          where
                           GongHsj.Field<string>("GongHao") =="A0003"
                          select GongHsj;
dtLy是一个DataTable,GongHao是它的一个字段,它存储的记录如下,工号为A0003的记录确实有16条:
 (这里原来想贴一个结构和数据图,但没能贴上)
为什么同一个位置上的常量与变量就能有如此大的差别呢?百思不得其解。请高手指点,本人在此表示真诚的谢谢!!

------解决方案--------------------
调试吧,看看是不是前后空格惹的祸:

  GongHsj.Field<string>("GongHao").Contains(ViewState["temp"].ToString())

or :

  GongHsj.Field<string>("GongHao").Trim() == ViewState["temp"].ToString().Trim()