簡體   English   中英

.Net C#String.Join如果元素值為null,如何輸出“null”而不是空字符串?

[英].Net C# String.Join how to output “null” instead of empty string if element value is null?

根據String.JoinMSDN文檔 “如果value中的任何元素為null,則使用空字符串。”

代碼我從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> ,但編譯器會自動推斷出type參數。

評論后的補充:

你的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]中的空值實際上是System.DBNull類型但它沒有用“null”替換它”。

這是我最終做的事情:

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

這是一個我不想做的條件,但是我看了一下這個頁面C#Empty Strings ,那個人用不同的方法來檢查一個字符串是否為空並且長度方法是最快的。 所以我想檢查長度,如果長度為0則加入“null”,當它不為零時加入實際的r[5]值。

弄明白為什么還是很好的?? “null”雖然沒有用。

編輯參考:問題的確如此? null而不是DBNull 另見.Net C#?? 運算符未觸發DataTable DataRow中的System.DBNull類型

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM