当前位置:编程学习 > C#/ASP.NET >>

序列包含一个以上的元素

  protected void Button1_Click(object sender, EventArgs e)
    {
        using (DataClassesDataContext Context = new DataClassesDataContext())
        {
            var staf = Context.GetTable<Staff>().Single() ;
            if (TextBox1.Text == staf.身份ID)
            {
                if (TextBox2.Text == staf.密码)
                    Response.Redirect("~/员工查询.aspx");
                else Response.Write("密码错误!");
            }
            else Response.Write("用户不存在,请注册账号!");
        }
可是运行显示:
序列包含一个以上的元素 
  说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 

 异常详细信息: System.InvalidOperationException: 序列包含一个以上的元素
是怎么回事啊?请哪位大神指教。。。。。 --------------------编程问答-------------------- 两个错,
首先,你没有判断staf是否为空,如果为空的话if (TextBox1.Text == staf.身份ID)这个IF语句会报错的,当然你现在这个错不是报在这。
其次,var staf = Context.GetTable<Staff>().Single(); 你确实他返回的不是一个数组吗!!!所以就会报出 “序列包含一个以上的元素” --------------------编程问答-------------------- 应该是没有找到数据吧 --------------------编程问答-------------------- var staf = Context.GetTable<Staff>().Single();
是取满足条件的唯一的元素,你这里Context.GetTable<Staff>()返回的是一个集合

var id = TextBox1.Text;
var staf = Context.GetTable<Staff>().SingleOrDefault(staf => staf.身份ID == id) ;
if(staf != null)
{
        if (TextBox2.Text == staf.密码)
              Response.Redirect("~/员工查询.aspx");
        else Response.Write("密码错误!");
}
else 
   Response.Write("用户不存在,请注册账号!");
补充:.NET技术 ,  ASP.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,