2

私はlinqに問題があります.私は次のコードを持っています:

        Models.Users user = null;
        foreach (var item in db.Users)
        {
            if (item.username.Equals(username))
            {
                ausgabe = true;
                user = item;
            }
        }

        // linq, does not work
        user = null;
        var test = from u in db.Users
                   where u.username.Equals(username)
                   select u;
        user = (Models.Users)test;

IQueryable をテストするため、実行時にエラーが発生しますが、この会話を行う方法は?

4

2 に答える 2

3

クエリを実行したいときに問題がユーザーにクエリをキャストしているように見えるので、おそらく:

user = test.SingleOrDefault();

( FirstOrDefault()First()、およびも参照Single())

また、利便性と読みやすさのために、次のことをお勧めします。

where u.username == username

(また、通常u.usernameのコードでは、 であるという問題を回避し、nullしたがって を引き起こしますNullReferenceException

于 2012-06-28T07:21:30.483 に答える
2

キャストが間違っています。オブジェクトのリストを 1 つのオブジェクトに割り当てます。

   var test = from u in db.Users
               where u.username.Equals(username)
               select u;
    user = (Models.Users)test; // wrong part.

行う

user = test.FirstOrDefault();

または

 user = db.Users.FirstOrDefault(x=>x.username.Equals(username));
于 2012-06-28T07:22:48.263 に答える