-1
public bool IsUser(string username)
    {
        bool user = false;
        using (var client = new datingEntities())
        {
            var result = from x in client.Person
                         select x;

            foreach (var item in result)
            {
                if (item.Username == username)
                {
                    user = true;
                }
            }
        }
        return user;
    }

このメソッドは、私が持っている SQL データベースからデータを取得するために使用しています。データベース接続に問題はありません。パラメーター username がデータベースに存在する場合でも、常に false を返すだけです (データベース内のデータを再確認しました)。私は以前にこの方法を試しましたが、うまくいきましたが、うまくいきませんでした。データベースに対してエンティティ フレームワークを使用しています

4

4 に答える 4

5

これは次のようになります。

public bool IsUser(string username)
{
    using (var entities = new datingEntities())
    {
        return entities.Person.Any(p => p.Username == username);
    }
}

ここで、すべてのユーザー エンティティを要求し、それらをループして、ユーザーがクエリされたユーザー名と一致するかどうかを確認します。上記のように、Entity Framework または LINQ にクエリを記述させる必要があります。

関数が機能しない理由については、ブレークポイントを設定し、ユーザーがまったく見つからないかどうかを確認してください。それをデバッグすることはできません。

于 2013-01-07T10:56:21.127 に答える
1

「ToUpper()」を使用

if (item.Username.ToString().ToUpper() == username.ToUpper())
{
 user = true;
}

[編集]

または「等しい」を使用

item.Equals(username, StringComparison.OrdinalIgnoreCase)
于 2013-01-07T10:57:07.023 に答える
0

コメントに記載されているように、私の答えは他の人よりも良くありませんが、参考のためにここに残しました。

false を返す理由はわかりませんが、達成しようとしていることは通常、次の方法で行われます。

public bool IsUser(string username)
{
    using (var client = new datingEntities())
    {
        User user = client.Persons.SingleOrDefault(u => u.Username == username);
        return user != null;
    }
}

この方法は、最初にデータベースからすべての User レコードを取得してから、それらを繰り返し処理して、提供された文字列と等しい Username を持つ 1 人のユーザーを見つけるため、あなたの方法よりもはるかに効率的です。私の方法では、提供された文字列と等しい Username を持つ 1 つのレコードを取得しようとします。そのようなレコードが存在しない場合は false を返し、それ以外の場合は true を返します。

于 2013-01-07T10:55:25.820 に答える
0

item.UserName と username の両方の値を小文字に変換し、この方法で比較します。これはより信頼できるように見えます。また、次のようにループを回避するために linq クエリを変更できます。

var result = from x in client.Person
             where x.UserName.ToLower() == userName.ToLower()
                         select x;
于 2013-01-07T10:56:05.700 に答える