-1

私は LINQ to SQL で遊んでいますが、簡単な質問がいくつかあります。

  • クエリの最後に Select が必要になるのはいつですか?
  • Select を省略できるのはいつですか?

クエリの例を次に示します。

Dim pageRoute = From r In db.PageRoutes Where r.PageId = pageId Order By r.Id Descending

Dim pageRoute = From r In db.PageRoutes Where r.PageId = pageId Order By r.Id Descending

Dim dp = From r In db.DownloadPageOnlineOnlies Where r.PageId = pageId Order By r.Weight Descending, r.Id Ascending

Dim download = (From r In db.Downloads Where r.Id = id).First
  • それらのいずれかが技術的に間違っていますか?
  • それらは Select などで改善できますか?

一言で言えば、次のいずれかがいつ必要になるかわかりません。

Select r
Select r.AColumnINeed, r.BColumnINeed (does this improve performance?)

ありがとう。

PS LINQ クエリが非常に大きくない限り、1 行で記述するのが好きです。

4

3 に答える 3

2

wherelinq ステートメントの select 部分は、句に一致するコレクションから完全なオブジェクトを取得する場合にのみ、完全にオプションです。コレクション内のオブジェクトから個々の値が必要な場合は、LINQ を介して、select 句を使用する必要があります。

私は個人的には常にselect r純粋な習慣から最後に句を付けますが、オプション strict をオンにすると、他の人のコードでいくつかの問題に遭遇しましたが、LINQ を書いたときはそうではありませんでした。select句をオフのままにしておくoption strict onと、何らかの理由で将来的に有効にすることにした場合に、複数の遅延バインディング エラーが発生します。

要するに、句は必要ありませんが、select後で方向転換することにした場合にのみ、自分自身を助けていますoption strict on。そして、私の意見では、コードがはるかに読みやすくなります。

于 2012-05-30T18:29:57.683 に答える
1

20 列のテーブルを作成してみましょう。WITH select (2 列) のクエリと WITHOUT のクエリを使用します。2 つの実行計画は異なる可能性があり、前者の場合はデータベース サーバーから転送するデータがはるかに少なくなります。

于 2012-05-30T16:57:41.047 に答える
-1

より正確な結果を要求するクエリがあり、クエリからaまたはaとbのみが必要な場合は、select plusを使用することをお勧めします。これにより、正確な数がわかっているため、クエリのメモリ割り当てが節約されます。返す変数の数。

于 2012-05-30T16:56:01.593 に答える