C# 如何使用LINQ将TypeA的嵌套数据结构转换为TypeB

C# 如何使用LINQ将TypeA的嵌套数据结构转换为TypeB,c#,linq,algorithm,C#,Linq,Algorithm,我有以下几种: class TypeA { public string Name { get; set; } public object Value { get; set; } // Holds either a primitive DataType or a List<TypeA> public string IrrelevantInformation { get; set; } } class TypeB { public string Name

我有以下几种:

class TypeA
{
    public string Name { get; set; }
    public object Value { get; set; } // Holds either a primitive DataType or a List<TypeA>
    public string IrrelevantInformation { get; set; }
}

class TypeB
{
    public string Name { get; set; }
    public object Value { get; set; } //Holds either a primitive DataType or a List<TypeB>
}
A类
{
公共字符串名称{get;set;}
公共对象值{get;set;}//保存基元数据类型或列表
公共字符串不相关信息{get;set;}
}
B类
{
公共字符串名称{get;set;}
公共对象值{get;set;}//保存基元数据类型或列表
}
我想把a型的Hirchical结构转换成B型

我使用了一种传统的递归方法:

private TypeB ConvertToTypeB(TypeA Input)
{
    return new TypeB() { Name = Input.Name, Value = ((Input.Value is List<TypeA>) ? ((List<TypeA>)Input.Value).Select(v=>ConvertToTypeB(v)).ToList() : Input.Value) };
}
专用类型B转换为类型B(类型A输入)
{
返回新的TypeB(){Name=Input.Name,Value=((Input.Value是List)?((List)Input.Value)。选择(v=>ConvertToTypeB(v)).ToList():Input.Value)};
}

我的问题是:如果不使用ConvertToTypeB函数,仅使用一个Linq查询,是否可以完成此操作?

要转换层次结构,需要递归调用。
没有排除AtoB方法的方法。

要转换层次结构,需要递归调用。
没有排除AtoB方法的方法。

LINQ可用于将
TypeA
s序列转换为
TypeB
s序列,因为您可以将单个
TypeA
转换为
TypeB
(与
sequenceOfTypeA.Select(ConvertToTypeB)
一样简单)。但我怀疑非序列之间的转换是LINQ的工作。LINQ可以将
TypeA
s序列转换为
TypeB
s序列,因为您可以将单个
TypeA
转换为
TypeB
(与
sequenceOfTypeA.Select(ConvertToTypeB)
一样简单)。但我怀疑非序列之间的转换是LINQ的工作。