繁体   English   中英

转换列表 <MyClass> 列表 <MyClass.Mydata> 在C#中

[英]Converting List<MyClass> to List<MyClass.Mydata> in C#

我们假设我有一个班级:

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

我有这个类的列表:

List<MyClass>

我想做一个:

List<string> 

它将包含来自的所有MyClass.Name:

List<MyClass>

有没有一种快速的方法如何使用Linq做到这一点?

当然,使用SelectToList

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

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

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

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

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

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

如果您的代码中有很多类型转换(例如从实体模型到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);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM