0

ここに 2 つの LINQ クエリがあります。これらのクエリのどれが適切で、使用するのが速いかを知りたいだけです。

サンプルⅠ

var GetUSer = (from UserItem in dbs.users
               where UserItem.UserID == UserID
               select new User(UserItem))
               .OrderBy(item => item.FirstName)
               .Skip(0)
               .Take(10)
               .ToList();

サンプルⅡ

var GetUSer = (from UserITem in dbs.user
                 .Where(item => item.UserID == UserID)
                 .OrderBy(item => item.FirstName)
                 .Skip(0)
                 .Take(10)
                 .AsEnumerable()
               select new User(UserItem)).ToList();

どちらもうまく機能していますが、どちらが最適かを知りたいだけです。

4

2 に答える 2

0

これら2つの間で、私は最初のものを好みます(読みやすくするために、クエリ全体をデータベースで実行する場合は、いくつかのことを切り替える必要があります)。両方が機能する場合でも、それはあなた次第です。

個人的には、必要がなければクエリ構文とラムダ構文を混在させるのは好きではなく、ラムダが好きです。私はそれを次のように書きます:

var GetUsers = db.user
                 .Where(u => u.UserID == UserID)
                 .OrderBy(u => u.FirstName)
                 .Take(10)
                 .Select(u => new User(u))
                 .ToList();

これは単一の構文を使用し、データベースで可能な限りクエリを実行し、余分な呼び出しを除外します。

于 2012-11-20T02:36:51.440 に答える
0

2番目の方が優れています。最初の1つは選択を実行し、次にフィルタリングを実行します。つまり、最初にデータベースからデータを取得してUserオブジェクトに変換し、次にフィルタリングする必要があります。

2つ目は、DB側でクエリを実行し、それをUserオブジェクトに変換します

最初のものは、ToList()の直前まで選択を移動することで修正できます。

于 2012-11-20T02:36:59.647 に答える