c# - ??运算符未触发 DataTable DataRow 中的 System.DBNull 类型

标签 c# .net linq datatable null

这是 .Net C# String.Join how to output “null” instead of empty string if element value is null? 的后续问题答案建议使用 ?? 运算符定义自定义空值,但从未触发替换。

DataSet myDataSet = new DataSet();
mySqlDataAdapter.Fill(myDataSet);
DataTable rotationData = myDataSet.Tables["Table"];

rotationValues = string.Join(", ",
    from r in rotationData.Rows.OfType<DataRow>()
    select r[5] ?? "null");

当我将代码更改为:

rotationValues = string.Join(", ",
    from r in rotationData.Rows.OfType<DataRow>()
    select r[5].GetType());

我可以观察到,其中包含有效数据的元素的数据类型是 System.Double,而 NULL 元素的数据类型是 System.DBNull?? 不对 System.DBNull 进行操作吗?

最佳答案

没有 DBNullnull 不是一回事。 但是你可以这样写:

select r[5] == DBNull.Value ? "null" : r[5]);

另一种可能性是使用 Field 扩展方法,它会让您对指定行中的每个列值进行强类型访问,以及 ?? 运算符将工作。

select r.Field<string>(5) ?? "null";

关于c# - ??运算符未触发 DataTable DataRow 中的 System.DBNull 类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16621962/

相关文章:

c# - 如何并行执行嵌套的异步/等待代码,同时在等待延续上维护相同的线程?

.net - 模型和 View 模型应该包含什么?

c# - 有没有一种方法可以使用标准 .NET 跟踪监听器配置(而不是一个大文件)来实现滚动日志输出

c# - 集合被修改;枚举操作可能不会在选择期间执行

c# - 卡住用户界面 c# winforms

c# - 按位运算,ulong 和 int

c# - 如何检测鼠标是否直接在 WPF 中的对象类型上

c# - 如何对 ToolStripItem 集合中的项目进行排序?

c# - Entity Framework - 使用长链依赖对象进行高效的预加载?

c# - LINQ 中的空序列