单一属性的泛型列表到字符串列表
本文关键字:列表 字符串 泛型 属性 单一 | 更新日期: 2023-09-27 18:13:37
我有一个通用列表,说类Student
ID
Name
Class
为属性。
我需要将其转换为仅具有List<student>
的Name属性的List<string>
我做了什么?
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();
use 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
。特别是:
- 在。net 2中可以直接使用
- 它比
Select
/ToList
更有效,因为转换知道开始的大小。(这些知识在Select
中有效地丢失了。)
以上答案都在linq的方法语法中。我将为您提供相同的查询语法-
List<string> str = (from item in stud select Name).ToList();