. net c#字符串.加入如何输出"null"而不是空字符串,如果元素值为null
本文关键字:null quot 字符串 如果 元素 何输出 输出 net | 更新日期: 2023-09-27 18:14:17
根据MSDN文档的字符串。Join "如果value中的任何元素为空,则使用空字符串代替。"
我的代码从DataTable中提取数据
rotationValues = string.Join<object>(", ",
from r in rotationData.Rows.OfType<DataRow>() select r[5]);
这将导致类似如下的输出:
8, 7, , 12, , , 13,
有没有办法简单地把"null"放在空字符串的位置,像这样:
8, 7, null, 12, null, null, 13, null
您可以选择
r[5] ?? "null"
而不仅仅是r[5]
。
同样,在调用泛型方法时删除<object>
部分。它仍然是您所加入的IEnumerable<object>
,但编译器将自动推断类型参数。
注释后添加:
你的r[5]
可能是DBNull.Value
。然后,这不是一个"真正的"空引用,但它的ToString
实现返回""
。所以在这种情况下,string.Join
文档并不严格相关。因此,尝试选择像
(r[5] == null || DBNull.Value.Equals(r[5])) ? "null" : r[5]
或者
(r[5] == null || r[5] is DBNull) ? "null" : r[5]
希望能有所帮助。
要扩展Jeppe的回答,我不确定为什么他的方式实际上不适合我,我确认r[5]
中的null值实际上是System.DBNull
类型的,但它没有用"null"替换。
我最后做的是:
rotationValues = string.Join(", ",
from r in rotationData.Rows.OfType<DataRow>()
select (r[5].ToString().Length == 0 ? "null" : r[5]));
这是一个我不想做的条件,但我看了一下这个页面c#空字符串,在那里家伙测试了不同的方法来检查字符串是否为空,长度方法是最快的。所以我想检查长度和连接"null",如果长度为0和实际的r[5]
值,当它不是零。
找出原因还是很好的??"null"不起作用
EDIT FOR REFERENCE:问题确实是??操作null
而不是DBNull
。参见。net c# ??操作符没有触发系统。数据表中的DBNull类型