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

时间:2016-08-05 20:07:25

标签: c# .net linq generic-list

我有以下课程:

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

List<ClassA>中有类的实例。如何从所有类中获取List<string>的{​​{1}}值?

3 个答案:

答案 0 :(得分:4)

您可以使用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);
}

答案 1 :(得分:3)

您可以使用Select

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

或通过query syntax

    var list = new List<ClassA>();

    var properties = from item in list
                     select item.Property2

答案 2 :(得分:0)

要从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