linq处理数据库空串办法-极品

Linq的一些查询语句中,经常要把不等于某个值的记录查询出来,例如:数据库中有一张表:Travel,需要把Travel表中字段IsUsestring)值不等于的记录查询出来。(注:字段IsUse值可以为null,查询出来的记录要求包括IsUse值为null的记录)

1.1、如以下代码1.1所示,表面看来,这是符合查询要求的。但查询出来的结果把IsUse值为null的记录过滤掉了,这往往会被我们忽略。

                                                              代码1.1

using (AttendanceCenterDataContext db = new AttendanceCenterDataContext())
{
   var resultList = db.Travels.Where(p=> p.IsUse != "").ToList();
}

 

1.2、如下代码1.2是我遇到类似问题时所用的解决方法。

                                                              代码1.1

using (AttendanceCenterDataContext db = new AttendanceCenterDataContext())
{
   var resultList = db.Travels.Where(p=> p.IsUse == null || p.IsUse != "").ToList();
}

对于null,使用null.contains会引发错误,因此应该先判断,例如....bz!=null && bz.contains;或者在数据库中先对null赋值为“ ”

 //测试null字段可否用length=0代替,完全不能。linq本质上是sql语言,在sql语言中len(字段)与  is null结果完全不同,为null的数据,无法计算其len

               /* var cx_bdjg_zy_school_zy = from aa in sjklj.zy_school_zy

                                           where aa.pc == "本科批" && aa.bdjg.Length == 0

                                           select aa;//当年的招生计划

                this.Lbl_ts.Text = cx_bdjg_zy_school_zy.Count().ToString();

                return;

                */

 

                //先把zy_school_zy中bdjg设置为null,否则数据被重复累积

                var gx_bdjg_zy_school_zy=from aa in sjklj.zy_school_zy

                                         where aa.pc == "本科批" &&  !(aa.bdjg==null || aa.bdjg.Length==0)

                                         select aa;//当年的招生计划 aa.bdjg==null || aa.bdjg.Length==0表示为null或空白字符

渝公网安备 50011902000225号

渝ICP备18008233号-1