0

我有一个目录条目列表SearchResultCollection。就像是:

SearchResultCollection src = ds.FindAll();

我需要类似的东西:

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

现在,我正在使用 foreach 遍历集合并一次插入一行DataGridView,如下所示:

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

这是一个慢,因为src在一个大表中。有没有办法使用lambdaslinq加快速度?

4

1 回答 1

0

LINQ 绝对不会加速你的代码。无论你是否使用 lambdas/LINQ,最终结果都是一样的:项目被一一添加到 DataGridView。

我怀疑这种缓慢的行为可能是由于每次添加项目时,DataGridView 对象都会执行一些昂贵的 UI 操作(例如重绘自身、计算滚动条位置)。

如果这是导致问题的原因,请在添加项目之前尝试隐藏 DataGridView,并在添加所有项目后使其再次可见。

或者,您可以尝试提前准备 DataTable,并在所有数据准备就绪后将其分配给 DataGridView 的 DataSource 属性。

希望这可以帮助。

于 2012-07-24T21:06:31.697 回答