0

にディレクトリ エントリのリストがありますSearchResultCollection。何かのようなもの:

SearchResultCollection src = ds.FindAll();

次のようなものが必要です:

dgvItems.datasource = [... something ... ]

現在、 foreach を使用してコレクションを反復処理し、次のDataGridViewように に一度に 1 行ずつ挿入しています。

DataTable dt = new DataTable();
dgvItems.datasource = dt;
foreach (SearchResult sr in src)
{    
.
.
dt.rows.add(sAMAccountName, sn, givenName);
}

大きなテーブルの src のため、これは遅いです。lambdasまたはlinqを使用して高速化する方法はありますか?

4

1 に答える 1

0

LINQ は間違いなくコードをスピードアップしません。ラムダ/LINQ を使用するかどうかに関係なく、最終結果は同じです。項目が 1 つずつ DataGridView に追加されます。

動作が遅いのは、アイテムを追加するたびに、DataGridView オブジェクトがコストのかかる UI 操作を実行するためであると思われます (たとえば、再描画、スクロールバーの位置の計算など)。

これが問題の原因である場合は、アイテムを追加する前に DataGridView を非表示にし、すべてのアイテムが追加されたら再び表示されるようにしてください。

または、事前に DataTable を準備し、すべてのデータの準備ができたら、それを DataGridView の DataSource プロパティに割り当ててみることもできます。

お役に立てれば。

于 2012-07-24T21:06:31.697 に答える