序列包含一个以上的元素
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