在C#中将List <myclass>转换为List <myclass.mydata>

时间:2017-04-11 13:59:51

标签: c#

我们假设我有一个班级:

public class MyClass
{
    public string Name {get; set;}
    public int Value {get; set;}
}

我有这个班级的清单:

List<MyClass>

我想做一个:

List<string> 

将包含来自:

的所有MyClass.Name
List<MyClass>

例如,使用Linq有一种快速的方法吗?

3 个答案:

答案 0 :(得分:11)

当然,请使用SelectToList

List<string> nameList = list.Select(x => x.Name).ToList();

另一种非LINQ方式是使用List.ConvertAll

List<string> nameList = list.ConvertAll(x => x.Name);

这稍微高效一点,因为它事先知道目标列表的大小。

答案 1 :(得分:3)

这非常简单,您只需要一个Select(),然后使用List<T>ToList()中实现结果:

List<string> result = list.Select(x=>x.Name).ToList();

答案 2 :(得分:1)

如果您的代码中有很多类型转换(例如从实体模型到DTO),请查看Automapper。这允许您将所有映射定义放在中心位置。它也可以按惯例转换对象。

using AutoMapper;

// only set up once in mapping config
CreateMap<MyClass, string>().ConvertUsing(src => src.Name); 

// usage
var myClass = new MyClass { Name = "the name" };
string result = Mapper.Map<string>(myClass); 

它可以通过将已知映射应用于每个成员来解决收集问题。

MyClass[] myClassArray = new [] { myClass1, myClass2 };
string[] result = Mapper.Map<string[]>(myClassArray);