我正在尝试根据 DataTable 中的“ID”DataColumn 更新“Name”DataColumn。'ID'-'Name' 对存储在 Dictionary 中,它是使用 DataTable 扩展方法创建的,如下所示:
public static Dictionary<object, object> ToDictionary(this DataTable dataTable, string keyColumn, string valueColumn)
{
Dictionary<object, object> resultDict = new Dictionary<object, object>();
if (dataTable.Columns.Contains(keyColumn) && dataTable.Columns.Contains(valueColumn))
{
foreach (DataRow dr in dataTable.Rows)
if (resultDict.ContainsKey(dr[keyColumn]) == false)
resultDict.Add(dr[keyColumn], dr[valueColumn]);
}
return resultDict;
}
我正在使用以下 LINQ 语法来更新 DataColumn:
misUserDetailsDT.AsEnumerable().ToList().ForEach(row => row.SetField("DepartmentName", deptDict[row["DepartmentID"]].ToString()));
这里的“misUserDetailsDT”是包含填充列“DepartmentID”和空列“DepartmentName”的 DataTable - 我正在尝试更新。
我有一个单独的方法生成字典如下:
var deptDict = departmentDT.ToDictionary("DeptID", "DeptName");
其中“departmentDT”是一个包含“DeptID”和“DeptName”列的数据表。
现在,当我执行 Linq 代码时,它会给出一个“KeyNotFoundException”。我已经彻底检查了“departmentDT”表和“deptDict”是否具有“misUserDetailsDT”表中的所有键(departmentID)。实际上,“departmentDT”本身是从“misUserDetailsDT”表的所有不同 ID 生成的。
我认为找出正确类型的 Dictionary 键存在一些问题。我什至尝试将其转换为 Int16,但没有成功。请帮我找出解决方案。