0

基本的に達成しようとしているのは、データベース内の大量のデータに対して CRUD 操作を実行することです (mvc 4 、LINQ を使用)。ここにはメッセージと呼ばれるテーブルがあります。クエリを実行して、folderid = 10 (数が 100 万を超える) のメッセージを取得する必要があります。

<List>Messages msgList = from msg in db.messages
                         where msg.folderid.equals(10)
                         select msg).tolist();

これにより、msgList コレクションで 100 万が返されます。一度に約 5000 のチャンクでレコードを取得したいと思います。助けてください!

4

3 に答える 3

1

最初の 5000 まで何かを行った後にフラグを設定し、各レコードのそのフラグを更新することをお勧めします。これで、上記のフラグを持たない別の 5000 を取ることができます。

var msgList = (from msg in db.messages
                         where msg.folderid ==10 && msg.flag
                              select msg).Take(5000).ToList();
于 2013-05-28T03:24:04.527 に答える
0

このスタイルのチャンキングを使用Skipして実行することを検討してください。Takeskip と take hereおよびhereについてお読みください。あなたのケースでは、これらのメソッド (流暢な構文でのみ使用可能) を呼び出すために、おそらくクエリ (クエリ構文) をラップする必要があります。Takeを呼び出す前に必ず使用してくださいToList。これは、レコードがメモリに呼び出されるときです。最初の 100 レコードには、次を使用します。

var msgList = (from msg in db.messages
               where msg.folderid == 10
               select msg).Take(100).ToList();

そして、次の 100 レコードには次を使用します。

var msgList = (from msg in db.messages
               where msg.folderid == 10
               select msg).Skip(100).Take(100).ToList();

等。

于 2013-05-28T03:27:03.073 に答える