3

顧客に関連する約 40 のデータ フィールドに対するクエリがあります。多くの場合、クエリは大量のレコード (最大 20,000 など) を返します。最初の 500 件程度の結果のみを使用したいと考えています。次に、一度に 10 個ずつページをめくることができるようにしたいだけです。

LINQはスキップして、これに対して合理的なアプローチをとっていますか? このアプローチを使用する場合と、他の方法で手動で行う場合の潜在的なパフォーマンスの問題はありますか?

4

2 に答える 2

6

Take()withoutSkip()は、SQL usingTOP句を生成します。

Take()withは、こ​​こに示すようにSkipSQL を使用して生成しますROW_NUMBER()

また、優れたLINQPadツールまたは LINQ to SQL ログを使用して、生成されたクエリを確認することをお勧めします。

于 2010-09-08T06:24:22.650 に答える
2

はい、SQL Server 2005 以降を使用している場合は、この関数を使用してページングを効率化する SQL が生成されます( Scott がこのブログ投稿で使用してROW_NUMBER()いる SQL とは異なります)。

于 2010-09-08T06:15:20.607 に答える