您好我有一个网格,其中包含了他们参与的教育课程的用户结果。对于每个用户,他们有自己的网格,向他们展示他们已经完成的每个课程以及他们每次尝试的状态。课程。例如:
CourseTitle |状态
Excel,不完整
肢体语言,完整
肢体语言,被遗弃的
肢体语言,不完整的
肢体语言,已完成
肢体语言,已完成
删除重复项后,表格应如下所示:
CourseTitle |状态
Excel,不完整
肢体语言,完整
肢体语言,被遗弃的
肢体语言,不完整
我试图这样做:
public static DataTable RemoveDuplicateRows(DataTable dTable,string colName,string colTitle) { Hashtable hTable = new Hashtable(); ArrayList duplicateList = new ArrayList();
foreach (DataRow drow in dTable.Rows)
{
if (hTable.Contains(drow[colName]) && hTable.Contains(drow[colTitle]))
{
duplicateList.Add(drow);
}
else
hTable.Add(drow[colName], drow[colTitle]);
}
foreach (DataRow dRow in duplicateList)
dTable.Rows.Remove(dRow);
return dTable;
}
但是这种方式给了我一个错误: 项目已添加。键入字典:'不完整'c#
我现在知道你不能在键值对中拥有重复的键。有没有人知道这种方法或我可以用来解决这个问题的不同方法。抱歉忘记添加,这需要添加到数据表中。
干杯,詹姆斯
答案 0 :(得分:0)
尝试使用Dictionnary或Dictionnary而不是Hashtable。
如果要保留所有状态,请使用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;
希望这有帮助。