2013-05-15 39 views
0

上午串的名單說,與泛型列表,從而提供具有一個泛型列表單一物業

ID 
Name 
Class 

的屬性。

我需要將其轉換爲List<string>,只有名稱屬性爲List<student> 我做了什麼?

List<student> stud; 
List<string> str; 
foreach (var item in stud) 
{ 
str.Add(item.Name); 
} 

有沒有更簡單的方法,我可以做到這一點,而無需使用每個?

感謝

+3

爲什麼不把它叫做'students',比省下幾個字符更可讀。 –

+0

@YuriyFaktorovich確實; * stud *是完全不同的東西。 –

+0

同意Yuiry。只是我想出了一些演示示例,以便提出疑問:) – Peru

回答

9

您可以使用LINQ Select項目的結果:

List<string> str = stud.Select(s => s.Name).ToList(); 
2
var str = stud.Select(s => s.Name).ToList(); 
1

使用LINQ

List<student> stud; 
List<string> str; 

str = stud.Select(s => s.Name).ToList(); 
1

就像到基於LINQ的解決方案替代建議:

List<string> str = stud.ConvertAll(s => s.Name); 

我可能會使用Select/ToList而不是List<T>.ConvertAll,因爲它更靈活的(如果你改變stud是一個數組後,例如,它不會有問題),但它是值得意識到的ConvertAll反正。特別是:

  • 它在.NET 2
  • 開箱即用的這是非常略高於Select/ToList更有效,因爲轉型知道大小下手。 (該知識在Select中實際上已丟失。)
+0

謝謝@Jon Skeet :) – Peru

1

以上答案都在linq的方法語法中。我給你的查詢語法各項─

List<string> str = (from item in stud select Name).ToList();