C# WPF中设置DataTable主键合并数据时类型转换错误如何解决?
错误原因
DataTable.PrimaryKey 属性类型为 DataColumn[](DataColumn数组),用于支持多列联合主键场景,你直接赋值单个DataColumn对象会触发类型不匹配错误。
修复方法
方案1:修改原有代码的错误行
只需要把主键赋值行修改为传入包含目标列的数组即可:
foreach (DataColumn item in Dt_Masterlist.Columns) { if (item.ColumnName == Combo_Master_Primary.SelectedItem.ToString()) { // 把单个DataColumn包装成数组再赋值 Dt_Masterlist.PrimaryKey = new DataColumn[] { item }; break; // 匹配到目标列后直接跳出循环,避免无效遍历 } }
方案2:简化逻辑(无需手动遍历列)
无需自行遍历所有列匹配列名,直接通过DataColumnCollection的索引器即可通过列名直接获取对应DataColumn,代码更简洁高效:
// 先加判空逻辑,避免未选择选项时空引用报错 if (Combo_Master_Primary.SelectedItem != null) { string selectedCol = Combo_Master_Primary.SelectedItem.ToString(); Dt_Masterlist.PrimaryKey = new DataColumn[] { Dt_Masterlist.Columns[selectedCol] }; Dt_Masterlist.Merge(Dt_NewList); }
内容的提问来源于stack exchange,提问作者Salt
相关产品推荐
相关产品推荐

