. 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

. net c#字符串.加入如何输出"null"而不是空字符串,如果元素值为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类型