Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 单个属性的字符串列表的通用列表_C#_List - Fatal编程技术网

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();