我有以下对象结构,其中B是从A派生的,我得到的输入为List<A>
,有很多记录。我想通过简单的步骤(没有循环)将List<A>
转换为List<B>
。实现同样目标的最佳方法是什么?
注意:我不想使用AutoMapper。
public class A
{
public A() { }
public virtual string Name
{
get;
set;
}
}
public class B : A
{
public B()
: base()
{
}
private string _name;
public override string Name
{
get
{
return _name;
}
set
{
_name = string.Concat("Hello ", base.Name);
}
}
public string Id
{
get { return "101"; }
}
}
答案 0 :(得分:2)
您可以通过从A类声明B类的构造函数来完成此操作 这样:
df = pd.DataFrame({'A':[1,2,3],
'B':[4,5,6],
'C':[7,8,9],
'D':[1,3,5]})
print (df)
A B C D
0 1 4 7 1
1 2 5 8 3
2 3 6 9 5
s = pd.Series(df.columns.values, name='x')
print (s)
0 A
1 B
2 C
3 D
Name: x, dtype: object
s1 = df.columns.to_series().rename('x')
print (s1)
A A
B B
C C
D D
Name: x, dtype: object
而不是这样:
public B(A a):base()
{
this._name = a.Name;
}
答案 1 :(得分:0)
根据评论这是输出,但我仍然不明白这一点。
List<A> thisIsA = new List<A>();
thisIsA.Add(new B());
List<B> thisIsB = new List<B>();
thisIsB.AddRange(thisIsA.Cast<B>());