从Datagridview中删除重复的行,而没有新的按钮

时间:2019-01-19 06:30:37

标签: c# datagridview duplicates row

我有一个datagridview,它有两列,并且从我的SQL-Server表中获得它的值(三列)。无需使用新按钮就能删除重复的行吗?

这是我的代码:

                    foreach (DataRow r in d.Rows)
                    {
                        dgw.Rows.Add(r["c1"].ToString() + " " + r["c2"].ToString(), r["c3"]);
                    }

谢谢您的回答...

编辑:我需要使用C#代码而不是sql的答案。

2 个答案:

答案 0 :(得分:1)

您要避免在数据网格视图中显示重复的记录,为什么不在查询数据时仅选择那些不同的记录。

string q = "SELECT DISTINCT c1, c2, c3 FROM mytable......";

除了遍历数据表中的每一行外,您还可以像使用DataSource的{​​{1}}属性一样,

DataTable

编辑1:

您可以先检查该行,然后再将其添加到数据网格视图中,例如

SqlDataAdapter s = new SqlDataAdapter(q, c);
DataTable d = new DataTable();
s.Fill(d);
dgw.DataSource = dt;

位置:

  • foreach (DataRow r in d.Rows) { bool existingRow = dgw.Rows .Cast<DataGridViewRow>().AsEnumerable() .Any(x => Convert.ToString(x.Cells["Column1"].Value).Split(' ')[0] == r["c1"].ToString() && Convert.ToString(x.Cells["Column1"].Value).Split(' ')[1] == r["c2"].ToString() && Convert.ToInt32(x.Cells["Column2"].Value) == Convert.ToInt32(r["c3"]) ); if (!existingRow) dgw.Rows.Add(r["c1"].ToString() + " " + r["c2"].ToString(), r["c3"]); } Column1是数据网格视图中的列。
  • Column2c1c2是数据表中的列

答案 1 :(得分:0)

  • 这些行不是重复的,您必须在SQL select中对其进行处理
  • 您的情况如何?如果您按Column1分组,那该怎么办 Column2?
  • 总和?最大吗平均?哪一个?