使用linq获取DataTable列名,列为null时出错

时间:2012-12-23 15:27:26

标签: linq c#-4.0

我有一个n列和数据表的数据表我正在将它转换为Pivot。

我已经有一段代码用于将其转换为Pivot,参考:

Adding Sum per row in PIVOT using LINQ

现在当有一个包含空值的列时会出现问题。

以下行失败并显示错误

dtPivot.PrimaryKey = dtPivot.Columns.Cast<DataColumn>().ToArray();

Error : Column 'x' has null values in it.

任何人都可以帮助我,如何处理......

1 个答案:

答案 0 :(得分:0)

首先,我要看一下究竟是什么导致了这个问题。

在该行前添加断点,并查看dtPivot.Columns中包含的项目(您可以尝试使用ToArray())。

是否有null项或有null属性导致问题的项目?您可以通过在调试窗口中使用watch来尝试将项目从dtPivot.Columns手动转换为DataColumn,并查看哪些项目会抛出错误(以及可能为什么会抛出错误)。

如果错误是因为dtPivot.Columns中的某些项目是null,那么您可以先尝试使用Cast<object>().Where(o => o != null)过滤掉它们。如果错误是因为属性是null,那么看看是否还有其他任何东西你可以先将列强制转换,然后尝试过滤列(或填写缺失的值,如果需要的话)