2

を返すWebサービスがありますList<SampleClass>。LINQ-to-SQLを使用してデータベースからデータを取得しIEnumerable<SampleClass>.、に変換IEnumerable<SampleClass>List<SampleClass>ます。

LINQ-to-SQL操作のパフォーマンスは問題ありませんが、操作を実行するには時間IEnumerable<SampleClass>List<SampleClass>かかります。IEnumerable<SampleClass>から最高のパフォーマンスを得るためのソリューションはありますList<SampleClass>か?

データベースから3000を超えるレコードを読み取りました。

ありがとうございました

4

1 に答える 1

11

IEnumerable to Listは、操作の実行に時間がかかります。

遅延が発生する理由は、遅延が発生した場合ToList、つまり実際のクエリが実行されてデータベースからレコードがフェッチされる時間であるためです。

これは、遅延実行と呼ばれます。

var query = db.yourTable.Where(r=> r.ID > 10);
var List = query.ToList(); //this is where the actual query gets executed. 

ToList、などを使用してクエリを反復処理する場合は常にToArrayCount()実際のクエリが実行されます。

IEnumerableからListに最高のパフォーマンスを得るソリューションはありますか?データベースから3000を超えるレコードを読み取りました。

クエリを改善せずに、いいえ、できません。しかし、本当に3000レコードをフェッチする必要がありますか?を使用してページングを調べることができますSkipTake

于 2012-11-22T09:30:34.713 に答える