如何从列表中获取特定属性的值

本文关键字:属性 获取 列表 | 更新日期: 2023-09-27 18:01:14

我有以下类:

public class ClassA
{
   public string Property1 { get; set; }
   public string Property2 { get; set; }
   public string Property3 { get; set; }
}

List<ClassA>中存在该类的实例。如何从所有类中获得Property2的值的List<string>

如何从列表中获取特定属性的值

您可以使用Linq.Select来执行此操作:

List<ClassA> list = new List<ClassA>
{
    new ClassA { Property2 = "value 1"},
    new ClassA { Property2 = "value 2"},
};
//This is method syntax
var result = list.Select(item => item.Property2).ToList();
//This is query syntax
var result = (from item in list
             select item.Property2).ToList();

注意ToList()不是必须的,这里只是为了方便使用此代码示例

Select基本上可以归结为类似于:

List<string> response = new List<string>();
foreach(var item in list)
{
    response.Add(item.Property2);
}

您可以使用Select

var properties = listOfA.Select(x=>x.Property2);

或者通过查询语法:

    var list = new List<ClassA>();
    var properties = from item in list
                     select item.Property2

要改变Select(...).ToList()的"模式",您还可以使用List<T>内部的现有方法来完成这项工作,即使用几乎相同的代码的ConvertAll

// source is your List<ClassA>
var result = source.ConvertAll(item => item.Property2);
// result is already a List<string> so no need for extra code