上午串的名單說,與泛型列表,從而提供具有一個泛型列表單一物業
ID
Name
Class
的屬性。
我需要將其轉換爲List<string>
,只有名稱屬性爲List<student>
我做了什麼?
List<student> stud;
List<string> str;
foreach (var item in stud)
{
str.Add(item.Name);
}
有沒有更簡單的方法,我可以做到這一點,而無需使用每個?
感謝
上午串的名單說,與泛型列表,從而提供具有一個泛型列表單一物業
ID
Name
Class
的屬性。
我需要將其轉換爲List<string>
,只有名稱屬性爲List<student>
我做了什麼?
List<student> stud;
List<string> str;
foreach (var item in stud)
{
str.Add(item.Name);
}
有沒有更簡單的方法,我可以做到這一點,而無需使用每個?
感謝
您可以使用LINQ Select
項目的結果:
List<string> str = stud.Select(s => s.Name).ToList();
var str = stud.Select(s => s.Name).ToList();
使用LINQ
List<student> stud;
List<string> str;
str = stud.Select(s => s.Name).ToList();
就像到基於LINQ的解決方案替代建議:
List<string> str = stud.ConvertAll(s => s.Name);
我可能會使用Select
/ToList
而不是List<T>.ConvertAll
,因爲它更靈活的(如果你改變stud
是一個數組後,例如,它不會有問題),但它是值得意識到的ConvertAll
反正。特別是:
Select
/ToList
更有效,因爲轉型知道大小下手。 (該知識在Select
中實際上已丟失。)謝謝@Jon Skeet :) – Peru
以上答案都在linq的方法語法中。我給你的查詢語法各項─
List<string> str = (from item in stud select Name).ToList();
爲什麼不把它叫做'students',比省下幾個字符更可讀。 –
@YuriyFaktorovich確實; * stud *是完全不同的東西。 –
同意Yuiry。只是我想出了一些演示示例,以便提出疑問:) – Peru