将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列,我希望能够删除/更改/不显示等。其他列
只是不确定什么是
您的想法是正确的,但请使用字典。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(),然后附加/添加元素。