0
我从下面的代码中获得Datatable
的不同值。这非常慢。凭借9000个独特的值,我在2分钟后停止了阅读。是否有可能做得更快?获取datagridview不同的列值
private void GetWaarde(string Veldnaam)
{
if (DatatabelExport.Rows.Count > 0)
{
Cursor.Current = Cursors.WaitCursor;
DataGridViewComboBoxColumn cb = (DataGridViewComboBoxColumn)dataGridView3.Columns["Waarde"];
if (cb.Items.ToString() != "") //als veld Waarde al gevuld is dan niet opnieuw vullen
{
var x = (from r in DatatabelExport.AsEnumerable()
select r[dataGridView1.Columns[Veldnaam].Name]).Distinct().ToList();
for (int i = 0; i < x.Count - 1; i++)
{
cb.Items.Add(x[i].ToString());
}
}
cb.Dispose();
Cursor.Current = Cursors.Default;
}
}
首先我会重新考虑UI设计。没有用户愿意享受面对9000个项目的CBO。来自DGV数据源的第二部作品(datatable?)。第三,不是逐个添加项目,而是使用AddRange或者甚至更好地将您的列表用作数据源。第四,哪一部分占用最多的时间?使用类似的代码我可以在4或5秒内从数据表中获得20000个唯一值(ID) – Plutonix
代码的耗时部分不会从数据表获取唯一值。这是您将项目添加到组合框的部分。要查看解决方案,请查看[此帖子](https://stackoverflow.com/a/39338415/3110834)。 –
我注意到您在以前的问题中没有接受过任何答案,也没有投过票。请参加[参观]并了解如何接受并提出答案,并对以前的问题进行审核,并接受并提出好的答案。 –