2014-07-15 32 views
-1

有沒有辦法轉換成通用的清單,列出...我想這樣的,但我得到一個異常....請幫助轉換泛型列表,以字符串列表

Class Demo 
{ 
    public list<string> convert() 
    { 
     List<example> eg = new List<example>(); 
     eg.Add(new example{"Hello"}); 
     eg.Add(new example{"World"}); 
     List<string> str = new List<string>(); 
     str = eg.Cast<string>().ToList(); //Returns an System.InvalidCastException. 
          // Is there a way to cast a generic list to string list.. 
     return str; 
    } 
} 

Class example 
{ 
    public string name{ get; set; } 
} 
+7

你的代碼中有各種各樣的問題。這甚至不會編譯,所以你不會得到一個異常。請包括一個簡短的*完整的*程序來證明問題。僞代碼是不夠的。 –

+0

用'List str = new List ();事先創建一個新的列表;'是多餘的,因爲'.ToList()'創建一個新列表並且不填充現有列表。 –

回答

2

你需要的是一個投影,而不是演員。這是因爲您的example課程無法投射到string。在LINQ,突起由Select方法完成:

return eg.Select(x => x.name).ToList(); 
+0

我認爲它只會返回列表中的「名稱」...如果我想要我的完整模型呢? –

1

任何List<T>是一個通用列表;你想要做的是從對象列表中提取屬性,而不是執行轉換。可以使用LINQ來完成:

str = eg.Select(x => x.name).ToList(); 
1

還是不錯的老辦法(.NET 2.0):

foreach (var example in eg) 
{ 
    str.Add(example.name); 
}