我有一个C#对象,其结构类似于
class Source
{
public int Id {get; set;}
public List<Source> Children {get; set;}
}
我想将Source
类型的对象(未知数量为Children
)转换为Destination
类型的对象
class Destination
{
public int key {get; set;}
public List<Destination> nodes {get; set;}
}
有没有办法可以使用LINQ
执行此操作,或者我必须遍历所有并映射它。
答案 0 :(得分:4)
你可以像这样做一些递归的事情:
public class Source
{
public int Id { get; set; }
public List<Source> Children { get; set; }
public Destination GetDestination()
{
return new Destination
{
nodes = Children.Select(c => c.GetDestination()).ToList(),
key = Id
};
}
}
答案 1 :(得分:0)
你可以这样做:
List<A> alist = new List<A>();
List<B> blist = alist.Select(a => new B()).ToList();
public class A
{}
public class B
{}
答案 2 :(得分:0)
也许尝试将一个构造函数添加到Destination类中,该类接受Source作为参数:
class Destination
{
public int key {get; set;}
public List<Destination> nodes {get; set;}
public Destination(Source source)
{
Key = source.Id;
Nodes = source.Select(s => new Destination(s)).ToList();
}
}
然后做:
var destinations = sources.Select(s => new Destination(s)).ToList();
这可能会永远运行,但是没有尝试过。