0

Student我有一个通用列表说类

ID
Name
Class

作为属性。

我需要将其转换为List<string>仅具有我做了什么的 Name 属性List<student>

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

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

谢谢

4

5 回答 5

9

您可以使用 LinqSelect来投影您的结果:

List<string> str = stud.Select(s => s.Name).ToList();
于 2013-05-15T14:47:47.703 回答
2
var str = stud.Select(s => s.Name).ToList();
于 2013-05-15T14:48:16.677 回答
1

使用 linq

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

str = stud.Select(s => s.Name).ToList();
于 2013-05-15T14:48:45.780 回答
1

就像提出的基于 LINQ 的解决方案的替代方案一样:

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

我可能会使用Select/ToList而不是因为它更灵活(例如,如果您稍后更改为数组List<T>.ConvertAll也没关系)但无论如何都值得了解。尤其是:studConvertAll

  • 它在 .NET 2 中开箱即用
  • Select它比/稍微高效一些ToList,因为转换知道开始的大小。(该知识实际上丢失在Select.)
于 2013-05-15T14:49:51.863 回答
1

以上答案都在 linq 的方法语法中。我会给你相同的查询语法——

List<string> str = (from item in stud select Name).ToList();
于 2013-05-15T15:14:55.720 回答