我有一个dataGridView,它显示表中的数据,将这些数据导出为xml文件后,将唯一字段添加到另一个表中,这样我就只能显示未导出的数据。
我如何仅显示尚未导出的数据:
for (int i = 0; i < dataGridView1.Rows.Count; i++)
{
SqlCommand queryLocal = new SqlCommand("SELECT *uniqueField* FROM myTable
WHERE *uniqueField* = " + dataGridView1.Rows[i].Cells[3].Value.ToString().Trim().Replace("'","''"), con);
var reader = queryLocal.ExecuteReader();
if (reader.Read())
{
dataGridView1.Rows.RemoveAt(i);
i--;
}
reader.Close();
}
问题在于,过滤少于400行需要花费20秒钟以上的时间。 我如何在这里提高性能?
答案 0 :(得分:0)
您可以尝试以下方法:
SqlCommand queryLocal = new SqlCommand("SELECT DISTINCT *uniqueField* FROM myTable");
var reader = queryLocal.ExecuteReader();
List<string> uniqueFields = new List<string>();
while (reader.Read())
uniqueFields.Add(reader[0]);
reader.Close();
for (int i = 0; i < dataGridView1.Rows.Count; i++)
{
if (uniqueFields.Contains(dataGridView1.Rows[i])
{
dataGridView1.Rows.RemoveAt(i);
i--;
}
}