将Datatable中具有重复ID列的2条记录与for循环组合

本文关键字:记录 2条 for 组合 循环 列的 ID Datatable | 更新日期: 2023-09-27 18:30:01

我有一个dotnetfiddle,我在其中显示我的数据https://dotnetfiddle.net/UK2ZNX

我不介意使用linq语句将我的数据分组到一个数组中,但为了简单地循环我的数据,我希望最终使用for循环(而不是foreach),当找到存储在数组中的重复项时,我可以对它们进行一点操作

for(int i = 0; i < table1.Rows.Count; i++)
{
    Console.WriteLine("ID="+table1.Rows[i][0] + "  Name=" + table1.Rows[i][2]);
    //troublecalls.Add(TroubleCallModel.CreateTroubleCallFromRow(myDT.Rows[i]));
}

我试图在Hashset 中存储一些数据

HashSet<int> hs = new HashSet<int>();  

但我认为这对我没有帮助

基于我的dotnetfiddle输出

我有23、44和64 的重复ID

而不是看到

ID = 44 Name = Fido
ID = 44 Name = Thad

我想合并并查看

ID = 44  Name = Fido, Thad

同样,对于任何重复(目前在dotnetfiddle中也是23和64)

想要for循环的原因是我的真实数据中有大约30列,我希望能够删除/更改/不显示等。其他列

只是不确定什么是

将Datatable中具有重复ID列的2条记录与for循环组合

您的想法是正确的,但请使用字典。ID将是关键。检查字典是否没有键,如果没有,则添加键值对,如果有,则将Name附加到当前条目的末尾。

一个非常简单的例子:

Dictionary<int, string> myDic = new Dictionary<int, string>();
for (int i = 0; i < table1.Rows.Count; i++)
{
     if (myDic.ContainsKey(table1.Rows[i][0]))
     {
          myDic[table1.Rows[i][0]] += $", {table1.Rows[i][2]}";
     }
     else
     {
          myDic.Add(table1.Rows[i][0], table1.Rows[i][2]);
     }
}

如果您希望它们是一个数据结构,请执行上述操作,只需使用一个保存这些值的自定义类,并且由于您想要LINQ,请使用Any(),然后附加/添加元素。