单个属性的字符串列表的通用列表

时间:2013-05-15 14:46:31

标签: c# list

我有一个通用列表,说明了Student

ID
Name
Class

作为属性。

我需要将其转换为只有List<string>名称属性的List<student> 我做了什么?

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

有没有更简单的方法可以做到这一点而不使用每个?

由于

5 个答案:

答案 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。特别是:

  • 它可以在.NET 2中开箱即用
  • 它比Select / ToList更有效,因为转换知道要开始的大小。 (这些知识在Select中有效丢失。)

答案 4 :(得分:1)

以上答案都在linq的方法语法中。我将为您提供相同的查询语法 -

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