Rea*_*tor 4 .net c# linq datatable null
这是.Net C#String的后续问题.如果元素值为null,如何输出"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");
Run Code Online (Sandbox Code Playgroud)
当我将代码更改为:
rotationValues = string.Join(", ",
from r in rotationData.Rows.OfType<DataRow>()
select r[5].GetType());
Run Code Online (Sandbox Code Playgroud)
我可以观察到其中包含有效数据System.Double的元素的数据类型是NULL,而元素的数据类型是NULL System.DBNull.难道??不是操作上System.DBNull?
不DBNull,null也不是一回事.但你可以这样写:
select r[5] == DBNull.Value ? "null" : r[5]);
Run Code Online (Sandbox Code Playgroud)
另一种可能性是使用Field扩展方法,它将为您提供对指定行中每个列值的强类型访问,并且??运算符将起作用.
select r.Field<string>(5) ?? "null";
Run Code Online (Sandbox Code Playgroud)