2

Visual Studio 2010 で作成された SQL Data Server を使用しています。ユーザー名を持つユーザーの数を確認したいです。

var x = from u in db.UserInfoes
                        where
                        u.Password == password &&
                        u.Username == username
                        select count(*);

私の問題はcount(*)です.VSはこれを受け入れません.これを書く方法はありますか?

4

5 に答える 5

4

このようにすることもできます:

var x = db.UserInfoes
    .Count(u => u.Password == password && u.Username == username);

フィルター (述語) を Count() メソッド内に配置できるため、 where 句は冗長であると見なすことができます。

ただし、SINGLE レコードをチェックしているため(1 人のユーザーのみがユーザー名とパスワードの組み合わせに一致すると仮定)、実際には ANY メソッドを使用してブール値を取得する必要があります

var x = db.UserInfoes
    .Any(u => u.Password == password && u.Username == username);

テーブル全体を調べて正確な数を確認するのではなく、一致が見つかるとすぐに true を返すため、Any は count よりもわずかに高速です。

于 2013-07-30T13:34:41.583 に答える
3

返されたコレクションを当てにする必要があります。

var x = (from u in db.UserInfoes
         where u.Password == password &&
               u.Username == username
         select u).Count();
于 2013-07-30T13:32:04.510 に答える
2

実際には、Count 拡張機能で述語を設定できます。

   var x = db.UserInfoes.Count(u => u.Password == password && u.Username == username)
于 2013-07-30T13:35:00.960 に答える
1

拡張メソッドを使用して、

var x = db.UserInfoes
          .Where(u => u.Password == password && u.Username == username)
          .Count();
于 2013-07-30T13:32:11.457 に答える
0
var x = from u in db.UserInfoes
        where u.Password == password &&
              u.Username == username
        select u;

使用する

int i = (x != null) ? x.Count() : 0;
于 2013-07-30T13:35:35.947 に答える