我有一个datagridview,它有两列,并且从我的SQL-Server表中获得它的值(三列)。无需使用新按钮就能删除重复的行吗?
这是我的代码:
foreach (DataRow r in d.Rows)
{
dgw.Rows.Add(r["c1"].ToString() + " " + r["c2"].ToString(), r["c3"]);
}
谢谢您的回答...
编辑:我需要使用C#代码而不是sql的答案。
答案 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
是数据网格视图中的列。Column2
,c1
和c2
是数据表中的列答案 1 :(得分:0)