Student
我有一个通用列表说类
ID
Name
Class
作为属性。
我需要将其转换为List<string>
仅具有我做了什么的 Name 属性List<student>
?
List<student> stud;
List<string> str;
foreach (var item in stud)
{
str.Add(item.Name);
}
有没有更简单的方法可以做到这一点而无需使用每个?
谢谢
您可以使用 LinqSelect
来投影您的结果:
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
.)以上答案都在 linq 的方法语法中。我会给你相同的查询语法——
List<string> str = (from item in stud select Name).ToList();