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

Combining 2 records that have duplicate ID columns in Datatable with for loop

我有一个显示数据的 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 输出

我有重复的 ID 23、44 和 64

而不是看到

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

我想结合看看

ID = 44  Name = Fido, Thad

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

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

只是不确定最好的方法是什么

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

一个非常简单的例子:

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]);
     }
}

如果您希望它们成为数据结构,请执行上述操作,只需使用包含这些值的自定义 class,并且由于您需要 LINQ,请使用 Any(),然后使用 append/add元素。