2

クエリを使用して、ユーザーがデータベースに既に存在するかどうかを確認しています。ユーザーが見つかった場合は、それを (データベースではなく) リストに追加し、メッセージを表示します。ユーザーがまだ存在しない場合、プログラムはユーザーの追加に進みます。

結果が何も見つからなかったときに、クエリ結果をリストに追加するときに問題が発生します。クエリで何も見つからなかった (ユーザーがまだ存在していない) 場合、返される値は 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.");
                    }

ご協力ありがとうございました!

4

2 に答える 2

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.");
        }
于 2012-07-25T17:32:50.943 に答える
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.");
        }

データ サーバーは結果セットではなく数値のみを返すため、効率的です。

于 2015-12-29T03:18:44.807 に答える