将 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元素。
我有一个显示数据的 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元素。