如果序列包含没有元素显示消息框

时间:2016-09-23 15:00:15

标签: c# linq

我使用此代码在c#中创建了一个登录表单

DataclassesDatacontext db = new DataclassesDatacontext();
Student s = null

s = db.Students.Single(r => r.Username == textboxUname.Text && r.Password == textboxPword.Text);
if (s != null)
{
  form1 frm = new form1();
  frm.Show();
}

如果用户输入了有效帐户,则会显示form1,但如果用户输入的帐户无效或者他输入的用户名和密码在数据库中不存在,我会在第三行收到错误' 34;序列不包含任何元素"。

现在我的问题是,如果序列不包含没有使用try catch的元素,如何显示消息框。

提前致谢

2 个答案:

答案 0 :(得分:3)

我认为Single是异常的原因。你应该使用SingleOrDefault。

s = db.Students.SingleOrDefault(r => r.Username == textboxUname.Text && r.Password == textboxPword.Text);

当集合为空时,SingleOrDefault将返回null而不是像函数Single那样抛出异常。

答案 1 :(得分:-1)

正如Aaron所说,如果你使用SingleOrDefault,那么在这种情况下,else块就足够了。 通常,您可以使用Any()函数来测试是否存在任何元素(在您的情况下,结合Where())