[英]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做到这一点?
当然,使用Select
和ToList
:
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.