LinqtoDataTable-无法转换为DBNull当我枚举结果时,此查询会抛出错误{"CannotcastDBNull.Valueto'System.Int64'.Pleaseuseanullabletype."}。privatevoidAddLevels(longrootid){varresults=fromrowindata.AsEnumerable()whererow.Field("ParentID")==rootidselectrow;foreach(DataRowrowinresults){//dostuff}}ParentID列确实接受空值——我需要单独处理这些吗?EDIT2:下面的实际解决方案仍然使用Linq。编辑:我通过取消Linq并仅使用DataTable.Select语句解决了这个问题。如果有人知道性能差异,我会很感兴趣。在您的查询中使用这一行:whererow.Field("ParentID")==rootiddecimal?System.Nullable语法糖,与decimal基本相同,只是它还允许空值。long是一种完全不同的类型——它只能表示整数而不是十进制值,因此会出现“指定的转换无效”错误。longrootid是可空类型?应该只是它可以接受空值。以上就是C#学习教程:LinqtoDataTable–无法强制转换DBNull分享的所有内容。网络收藏不代表立场,如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
