没有找到结果时,linq查询返回什么

时间:2012-07-20 13:45:27

标签: linq null tolist

我正在使用查询来查看用户是否已存在于数据库中。如果找到用户,则将其添加到列表(而不是数据库),并显示消息。如果用户尚不存在,程序将继续添加用户。

将查询结果添加到列表时,如果结果未找到,则存在问题。如果查询没有找到(用户尚不存在),则返回的值不为null或0,所以我不确定如何检查。

我的代码工作正常,但我的问题是试图找到一种更优雅的方法。我尝试将查询结果添加到列表中。如果它是“catch”,则意味着用户不存在并且应该添加。现在我的代码是:

     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.");
                    }

谢谢你的帮助!

2 个答案:

答案 0 :(得分:2)

        var userIsNew = (from f in controlEntities.Users
                                where (f.UserId == userIdTextBox.Text)
                                select f).FirstOrDefault();


        if (userIsNew != null)
        {
            MessageBox.Show("This UserId already exists in the Database. \nPlease try another UserId.");
        }

答案 1 :(得分:0)

另一种方式是:

        bool userIsNew = controlEntities.Users.
            Count(f => f.UserId == userIdTextBox.Text) == 0;

        if (!userIsNew)
        {
            MessageBox.Show("This UserId already exists in the Database. \nPlease try another UserId.");
        }

它很有效,因为数据服务器只返回一个数字而不是结果集。