我有一個Data Row。我可以使用類型object[]
的屬性dataRow.ItemArray
獲取其中的物品。 我需要將其轉換爲String[]
或List<String>
將Object []轉換爲String []或列表的最佳方法<String>
我看到的方法ToArray<>
和ToList<>
。但不知道如何使用它。善良的幫助。
由於提前
我有一個Data Row。我可以使用類型object[]
的屬性dataRow.ItemArray
獲取其中的物品。 我需要將其轉換爲String[]
或List<String>
將Object []轉換爲String []或列表的最佳方法<String>
我看到的方法ToArray<>
和ToList<>
。但不知道如何使用它。善良的幫助。
由於提前
你有兩個選擇取決於dataRow.ItemArray
的實際對象。如果確實有在對象[]你可以只投元素明智的字符串對象。
dataRow.ItemArray.OfType<string>().ToList();
但如果對象是另一種類型的,如int或別的東西,你需要將轉換爲字符串(在本例中與.ToString()
但可能你的情況需要另一種自定義的方法
dataRow.ItemArray.Select(o => o.ToString()).ToList();
編輯:
如果您不需要List<string>
或string[]
明確,你可以離開了.ToList()
,並得到一個IEnumerable<string>
代替
的ToArray和ToList將不太做你想做的,因爲他們只會返回一個對象數組或列表。您需要首先將數據按摩到字符串中,並且Select
可以提供幫助。試試這個:
dataRow.ItemArray.Select(i => i == null ? string.Empty : i.ToString()).ToArray();
List<string> strList = objArray.Cast<String>();
你可能想先檢查空值:
List<string> strList = objArray.Select(o => o == null ? String.Empty : o.ToString()).ToList();
應該指出,這不會導致可能(或可能不是)所需的轉換。 – 2011-02-22 18:10:26
第二個例子是*不*僅僅是一個空檢查而是一個明確的*轉換*。應該指出這一點。 – 2011-02-22 18:16:18
您可以使用System.Array.ConvertTo
與System.Convert.ToString
爲代表。
object[] a = new object[10];
string[] b = Array.ConvertAll(a, p => (p ?? String.Empty).ToString())
(你想要的線是第二個)
我喜歡`「」 + i`在這種情況下,因爲它具有與三元w.r.t.同樣的效果nulls - 但風格主觀:) – 2011-02-22 18:09:28