我有两个课程如下
public class ClassX
{
int id,
string title,
string description
}
public class ClassY
{
int id,
string title,
string description,
int localeId,
int clientId
}
Run Code Online (Sandbox Code Playgroud)
我从这些类中有两个列表,如下所示
IList<ClassX> listX = new List<ClassX>();
IList<ClassY> listY = new List<ClassY>();
Run Code Online (Sandbox Code Playgroud)
我需要将listY列表转换为listX列表
在这种情况下请注意ClassY的属性即
int localeId,
int clientId
Run Code Online (Sandbox Code Playgroud)
不会填充值
我可以从listY到listX列表进行隐蔽
当然是:
listX = listY.Select(y => new ClassX()
{
description = y.description,
id = y.id,
title = y.title
}).ToList();
Run Code Online (Sandbox Code Playgroud)
这将从中选择所有常见属性,ClassX并为每个实例ClassY初始化ClassX实例ClassY.然后它调用ToList创建一个新的List<ClassX>.
请注意,您需要添加using System.Linq.
编辑:我必须同意@AdrianFaciu你应该考虑重构你的课程.当你需要将两个相似的类相互转换时,听起来好像你最好做ClassX一个基类ClassY.
public class ClassX
{
public int id { get; set; }
public string title { get; set; }
public string description { get; set; }
}
public class ClassY : ClassX
{
public int localeId { get; set; }
public int clientId { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
现在ClassY隐含着所有属性ClassX.