我有两个课程,如下所示,我需要投射list<child> to list<BM>
public class Child
{
[JsonProperty("name")]
public string title { get; set; }
public string type { get; set; }
public string url { get; set; }
public List<Child> children { get; set; }
}
public class BM
{
public string title { get; set; }
public string type { get; set; }
public string url { get; set; }
public List<BM> children { get; set; }
}
答案 0 :(得分:4)
你不能施展它。您可以创建新列表,其中所有项目都从一个类转换为另一个类,但您不能一次转换整个列表。
您应该创建一个方法,将Child
转换为BM
实例:
public static BM ToBM(Child source)
{
return new BN() {
title = source.title,
type = source.type,
url = source.url,
children = source.children.Select(x => ToBM(x)).ToList()
};
}
然后使用LINQ转换整个列表:
var BMs = source.Select(x => ToBM(x)).ToList();
答案 1 :(得分:2)
使用automapper的DLL。您可以在http://automapper.codeplex.com/wikipage?title=Lists%20and%20Arrays
了解有关automapper的更多信息List<BM> BMList=
Mapper.Map<List<Child>, List<BM>>(childList);
之前已经问过同样的问题
Automapper copy List to List
答案 2 :(得分:1)
如果您想在自定义类型之间进行转换,也可以使用自定义类型转换:
Class2 class2Instance = (Class2)class1Instance;
所以你需要的是在你的child
类中定义显式或隐式转换函数。
// Add it into your Child class
public static explicit operator BM(Child obj)
{
BM output = new BM()
{
title = obj.title,
type = obj.type,
url = obj.url,
children = obj.children.Select(x => BM(x)).ToList()
};
return output;
}
然后:
var result = source.Select(x => (BM)x).ToList();