将主详细信息对象转换为单个对象

时间:2014-03-09 08:51:43

标签: c# reflection

假设我们有一个主要的详细信息对象,如下所示。

public class A
{
  public string PropA{ get; set; }
  public List<B> obj { get; set; }
}

public class B
{
  public string PropB{ get; set; }
  public List<C> obj { get; set; }
}

public class C
{
  public string PropC{ get; set; }
}

另一个目标是

public class D
{
  public string PropA{ get; set; }
  public string PropB{ get; set; }
  public string PropC{ get; set; }
}

现在我们要将主要细节对象A的复制数据复制到单个对象D.是否可能?我怎么解决这个问题。你会给我一个通用的方法,将所有类型的主细节对象转换为单个对象。感谢。

1 个答案:

答案 0 :(得分:0)

您可以使用LINQ的SelectMany()

A myA = //...
var Ds = myA.SelectMany(a => a.obj.SelectMany(b => b.obj.Select(c => new D {
    PropA = a.PropA, 
    PropB = b.PropB, 
    PropC = c.PropC})));

或者,在查询语法中(哇,这看起来更清晰):

A myA = //...
var Ds = from a in myA
         from b in a.obj
         from c in b.obj
         select new D
         {
             PropA = a.PropA, 
             PropB = b.PropB, 
             PropC = c.PropC
         };