【发布时间】:2012-07-20 13:45:27
【问题描述】:
我正在使用查询来查看数据库中是否已经存在用户。如果它找到一个用户,它会将其添加到列表(而不是数据库)中,并显示一条消息。如果用户不存在,程序继续添加用户。
将查询结果添加到列表时存在问题,结果什么也没找到。如果查询一无所获(用户还不存在),则返回的值不是 null 或 0,所以我不确定如何检查。
我的代码运行良好,但我的问题是试图找到一种更优雅的方法。我尝试将查询结果添加到列表中。如果它是“捕获”,则表示用户不存在,应添加。现在我的代码是:
var userIsNew =
from f in controlEntities.Users
where (f.UserId == userIdTextBox.Text)
select f;
List<Users> temp = new List<Users>();
try
{
temp = userIsNew.ToList<Users>();
}
catch
{
//do nothing
}
if (temp.Count > 0)
{
MessageBox.Show("This UserId already exists in the Database. \nPlease try another UserId.");
}
感谢您的帮助!
【问题讨论】:
-
Logic by exception几乎总是错误。
-
对不返回匹配项的结果调用
.ToList<User>应该可以正常工作。它只是一个包含 0 个条目的列表。 -
这是我第一次尝试的。但是当我尝试将不匹配的结果添加到任何类型的列表时,它会引发异常。所以我的解决方法是使用这个抛出的异常来执行我的其余代码。
-
调用
temp = userIsNew.ToList<Users>()时,结果为空时抛出什么异常? -
异常只说“处理此请求时发生错误”