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

linq读取数据为空时的错误
用linq查询时因为数据表中某一项为空造成:未将对象引用设置到对象的实例。的错误,如何解决啊
用SQL时,当读取的数据为空时却不会出错
数据表中TeaID=1005 的TeaAge为NULL
protected void Button1_Click(object sender, EventArgs e)
  {
  sqlconn.Open();
  string s = "select * from TeacherInfo where TeaID=1005 ";
  SqlCommand cmd = new SqlCommand(s,sqlconn );
  SqlDataReader dr = cmd.ExecuteReader();
  dr.Read();
  TextBox1.Text = dr["TeaAge"].ToString();
  dr.Close();
  sqlconn.Close();

  }
  protected void Button2_Click(object sender, EventArgs e)
  {
  testDataContext test = new testDataContext();
  var query = from q in test.TeacherInfo where q.TeaID == 1005 select q;
  var result = query.ToArray()[0];
  TextBox1.Text = result.TeaAge.ToString ();
  }

------解决方案--------------------
Convert.ToString(result.TeaAge)

 或result.TeaAge.HasValue先判断下
------解决方案--------------------
这是因为 dr["TeaAge"] 的类型是 object,而 result.TeaAge 的类型是 int?。

很简单,写:
C# code
TextBox1.Text = result.TeaAge==null?"null":result.TeaAge.ToString ();