使用lambda填充DataGridView

时间:2012-07-24 18:52:06

标签: c# linq datagridview directoryservices

我在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在一个大表中。有没有办法使用 lambdas linq 加快速度?

1 个答案:

答案 0 :(得分:0)

LINQ肯定不会加速您的代码。无论您是否使用lambdas / LINQ,最终结果都是相同的:将这些项逐个添加到DataGridView。

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

如果这是造成问题的原因,请尝试在添加项目之前隐藏DataGridView,并在添加所有项目后再次显示它。

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

希望这有帮助。