C# 如何在DataGridView中找到具有相同值的单元格?
我有C# 如何在DataGridView中找到具有相同值的单元格?,c#,datagridview,datagridviewrow,C#,Datagridview,Datagridviewrow,我有DataGridView包含行数和列数,如ID,Name,Addr,等等。我想在Name列中查找具有相同值的行。 e、 g 现在我想基于相同的单元格值获取ID 1和ID 3。有很多方法可以实现这一点 您可以按名称对DataGridView进行排序,然后对其进行迭代以查找重复的名称 或者,您可以像这样将数据读入字典: Dictionary<string, List<int>> data = new Dictionary<string,List<int
DataGridView
包含行数和列数,如ID
,Name
,Addr
,等等。我想在Name
列中查找具有相同值的行。
e、 g
现在我想基于相同的单元格值获取ID 1和ID 3。有很多方法可以实现这一点
您可以按名称对DataGridView进行排序,然后对其进行迭代以查找重复的名称
或者,您可以像这样将数据读入字典:
Dictionary<string, List<int>> data = new Dictionary<string,List<int>>();
foreach (DataGridViewRow row in dataGridView1.Rows)
{
string name = row.Cells[1].ToString();
int ID = Convert.ToInt32(row.Cells[0]);
if (data.ContainsKey(name)) data[name].Add(ID);
else data.Add(name, new List<int>(new int[] { ID }));
}
foreach (string name in data.Keys)
if (data[name].Count > 1 )
{
Console.Write(name);
foreach (int ID in data[name]) Console.Write(ID.ToString("##### "));
Console.WriteLine();
}
字典数据=新字典();
foreach(dataGridView1.Rows中的DataGridViewRow行)
{
字符串名称=行。单元格[1]。ToString();
int ID=Convert.ToInt32(行单元格[0]);
if(data.ContainsKey(name))data[name].Add(ID);
添加(名称,新列表(新int[]{ID}));
}
foreach(data.Keys中的字符串名称)
如果(数据[名称]。计数>1)
{
控制台。写入(名称);
foreach(数据[name]中的intid)Console.Write(ID.ToString(“#####”);
Console.WriteLine();
}
或者你可以等一个有可爱LINQ解决方案的人
Dictionary<string, List<int>> data = new Dictionary<string,List<int>>();
foreach (DataGridViewRow row in dataGridView1.Rows)
{
string name = row.Cells[1].ToString();
int ID = Convert.ToInt32(row.Cells[0]);
if (data.ContainsKey(name)) data[name].Add(ID);
else data.Add(name, new List<int>(new int[] { ID }));
}
foreach (string name in data.Keys)
if (data[name].Count > 1 )
{
Console.Write(name);
foreach (int ID in data[name]) Console.Write(ID.ToString("##### "));
Console.WriteLine();
}