2011-02-22 70 views

回答

20

你有兩個選擇取決於dataRow.ItemArray

的實際對象。如果確實有在對象[]你可以只投元素明智的字符串對象。

dataRow.ItemArray.OfType<string>().ToList(); 

但如果對象是另一種類型的,如int或別的東西,你需要將轉換爲字符串(在本例中與.ToString()但可能你的情況需要另一種自定義的方法

dataRow.ItemArray.Select(o => o.ToString()).ToList(); 

編輯:
如果您不需要List<string>string[]明確,你可以離開了.ToList(),並得到一個IEnumerable<string>代替

3

的ToArray和ToList將不太做你想做的,因爲他們只會返回一個對象數組或列表。您需要首先將數據按摩到字符串中,並且Select可以提供幫助。試試這個:

dataRow.ItemArray.Select(i => i == null ? string.Empty : i.ToString()).ToArray(); 
+0

我喜歡`「」 + i`在這種情況下,因爲它具有與三元w.r.t.同樣的效果nulls - 但風格主觀:) – 2011-02-22 18:09:28

4
List<string> strList = objArray.Cast<String>(); 

你可能想先檢查空值:

List<string> strList = objArray.Select(o => o == null ? String.Empty : o.ToString()).ToList(); 
+1

應該指出,這不會導致可能(或可能不是)所需的轉換。 – 2011-02-22 18:10:26

+0

第二個例子是*不*僅僅是一個空檢查而是一個明確的*轉換*。應該指出這一點。 – 2011-02-22 18:16:18

4

您可以使用System.Array.ConvertToSystem.Convert.ToString爲代表。

9
object[] a = new object[10]; 
string[] b = Array.ConvertAll(a, p => (p ?? String.Empty).ToString()) 

(你想要的線是第二個)