C# 从哈希表中删除重复行
大家好,我有一个网格,里面有他们参加的教育课程的用户结果。对于每个用户,他们都有自己的表格,显示他们完成的每个课程以及他们每次尝试课程的状态。例如: 课程主题|状态C# 从哈希表中删除重复行,c#,datatable,key,duplicates,hashtable,C#,Datatable,Key,Duplicates,Hashtable,大家好,我有一个网格,里面有他们参加的教育课程的用户结果。对于每个用户,他们都有自己的表格,显示他们完成的每个课程以及他们每次尝试课程的状态。例如: 课程主题|状态 Excel,不完整 肢体语言,完整的 身体语言,被抛弃的 肢体语言,不完整 肢体语言,已完成 肢体语言,已完成 删除重复项后,表应如下所示: 课程主题|状态 Excel,不完整 肢体语言,完整的 身体语言,被抛弃的 肢体语言,不完整 我试着这样做: 公共静态DataTable RemovedUpplicateRows(DataTab
Excel,不完整
肢体语言,完整的
身体语言,被抛弃的
肢体语言,不完整
肢体语言,已完成
肢体语言,已完成 删除重复项后,表应如下所示: 课程主题|状态
Excel,不完整
肢体语言,完整的
身体语言,被抛弃的
肢体语言,不完整 我试着这样做: 公共静态DataTable RemovedUpplicateRows(DataTable dTable、string colName、string colTitle) { Hashtable hTable=新的Hashtable(); ArrayList duplicateList=新的ArrayList() 但这种方式给了我一个错误: 已添加项。在字典中键入:“未完成”c# 我现在知道,键、值对中不能有重复的键。是否有人知道解决此问题的方法,或者我可以使用其他方法来解决此问题。很抱歉,忘记添加需要添加到数据表中的内容
干杯,詹姆斯试着用字典或字典代替哈希表 如果您想保留所有状态,请使用Dictionary>。关键是课程,您将在值部分(列表)中拥有状态列表 如果我接受你的代码,它将是这样的:
Dictionary<string, List<string>> values = new Dictionary<string, List<string>>();
foreach (DataRow drow in dTable.Rows)
{
if (values.ContainsKey(drow[colName]))
{
if(values[row[colName]] == null)
values[row[colName]] = new List<string>();
if (!values[row[colName]].Contains(drow[colTitle]))
values[row[colName]].Add(drow[colTitle]);
}
}
return values;
字典值=新字典();
foreach(dTable.Rows中的数据行drow)
{
if(values.ContainsKey(drow[colName]))
{
if(值[行[colName]]==null)
值[行[colName]]=新列表();
如果(!values[row[colName]]包含(drow[colTitle]))
值[row[colName]]。添加(drow[colTitle]);
}
}
返回值;
希望这能有所帮助。我的字典定义没有通过sorryif(values.Contains(drow[colName])&&values.Contains(drow[colTitle]))这一行给出了一个错误。不包含定义Containessorry man在您进行此编辑之前我已经尝试过ContainesKey。它不起作用网格的结果来自一个添加到我称为dt的数据表中的存储过程。因此我必须执行dt=methodwhichremovesduplicates(dt,colName,colTitle)它说它不能将字典转换成数据表。有办法解决这个问题吗?这个问题仍然没有解决:(这个方法很好,但当我尝试这个dt=RemovedUpplicateRows(dt,“状态”,“课程名称”);很明显,它抛出了一个错误,因为字典需要以某种方式转换为数据表。我对这个东西很新,如果这个问题听起来有点愚蠢,那么很抱歉
Dictionary<string, List<string>> values = new Dictionary<string, List<string>>();
foreach (DataRow drow in dTable.Rows)
{
if (values.ContainsKey(drow[colName]))
{
if(values[row[colName]] == null)
values[row[colName]] = new List<string>();
if (!values[row[colName]].Contains(drow[colTitle]))
values[row[colName]].Add(drow[colTitle]);
}
}
return values;