我有一个通用列表,说明了Student
和
ID
Name
Class
作为属性。
我需要将其转换为只有List<string>
名称属性的List<student>
我做了什么?
List<student> stud;
List<string> str;
foreach (var item in stud)
{
str.Add(item.Name);
}
有没有更简单的方法可以做到这一点而不使用每个?
由于
答案 0 :(得分:9)
您可以使用Linq Select
来投射结果:
List<string> str = stud.Select(s => s.Name).ToList();
答案 1 :(得分:2)
var str = stud.Select(s => s.Name).ToList();
答案 2 :(得分:1)
使用linq
List<student> stud;
List<string> str;
str = stud.Select(s => s.Name).ToList();
答案 3 :(得分:1)
作为基于LINQ的解决方案的替代方案:
List<string> str = stud.ConvertAll(s => s.Name);
我可能会使用Select
/ ToList
而不是List<T>.ConvertAll
,因为它更灵活(如果您稍后将stud
更改为数组,则无关紧要,例如)但无论如何都值得了解ConvertAll
。特别是:
Select
/ ToList
更有效,因为转换知道要开始的大小。 (这些知识在Select
中有效丢失。)答案 4 :(得分:1)
以上答案都在linq的方法语法中。我将为您提供相同的查询语法 -
List<string> str = (from item in stud select Name).ToList();