C# 单个属性的字符串列表的通用列表
我有一个关于班级C# 单个属性的字符串列表的通用列表,c#,list,C#,List,我有一个关于班级学生的通用列表 ID Name Class 作为财产 我需要将其转换为一个列表,其中只有Name属性为列表 我做了什么 List<student> stud; List<string> str; foreach (var item in stud) { str.Add(item.Name); } 列表螺柱; 列表str; foreach(螺栓中的var项目) { str.Add(项目名称); } 是否有一种更简单的方法可以做到这一点,而不必为每
学生的通用列表
ID
Name
Class
作为财产
我需要将其转换为一个列表
,其中只有Name属性为列表
我做了什么
List<student> stud;
List<string> str;
foreach (var item in stud)
{
str.Add(item.Name);
}
列表螺柱;
列表str;
foreach(螺栓中的var项目)
{
str.Add(项目名称);
}
是否有一种更简单的方法可以做到这一点,而不必为每个人使用
谢谢您可以使用Linq选择
来投影您的结果:
List<string> str = stud.Select(s => s.Name).ToList();
List str=stud.Select(s=>s.Name.ToList();
使用linq
List<student> stud;
List<string> str;
str = stud.Select(s => s.Name).ToList();
列表螺柱;
列表str;
str=stud.Select(s=>s.Name.ToList();
作为建议的基于LINQ的解决方案的替代方案:
List<string> str = stud.ConvertAll(s => s.Name);
List str=stud.ConvertAll(s=>s.Name);
我可能会使用Select
/ToList
,而不是因为它更灵活(例如,如果您稍后将stud
更改为数组,这无关紧要),但无论如何,它都值得注意ConvertAll
。特别是:
- 它在.NET2中开箱即用
- 它比
Select
/ToList
稍微高效一些,因为转换知道要开始的大小。(该知识实际上在选择中丢失)
以上答案均采用linq的方法语法。我将为您提供相同的查询语法-
List<string> str = (from item in stud select Name).ToList();
List str=(来自螺柱选择名称中的项目).ToList();
为什么不称之为学生
,比保存几个字符可读性强得多。@YuriyFaktorovich;螺柱是完全不同的。同意尤里。只是我想出了一些问题的演示示例:)也看看我的答案。它位于最底部,是一种稍微不同的表达方式。
List<string> str = (from item in stud select Name).ToList();