我一直在寻找一段时间没有成功,如何从Child类型元素列表中派生父类型元素列表。 Parent类型包含持久数据,Child类型添加了一些我以后不需要的瞬态数据。
因此,我希望仅保留Parent类型的属性,并删除Child类型的其他属性,如下例所示:
public class MainPage
{
public class Parent
{
public string ParentProperty;
}
public class Child : Parent
{
public string ChildProperty;
}
public static List<Child> listChild = new List<Child> {
new Child { ParentProperty = "ABC", ChildProperty = "XYZ"},
new Child { ParentProperty = "DEF", ChildProperty = "UVW"}
};
public void SomeFunction()
{
List<Parent> listParent = GetParentList(listChild);
//listParent should contain 2 elements, each with only 1 property containing "ABC" and "DEF" respectively...
}
public List<Parent> GetParentList(List<Child> listchild)
{
return listchild.????????; //what should I include here ???
}
}
像我return (listchild as List<Parent>);
这样的所有尝试都给了我列表中的子元素,即使用ChildProperty“XYZ”和“UVW”,这使我的其余代码失败...
感谢您的想法!
答案 0 :(得分:2)
这将使您的子实例表示为父引用:
public List<Parent> GetParentList(List<Child> listchild)
{
return listchild.Cast<Parent>().ToList();
}
如果确实想要让Parent实例与子项具有相同的数据,则必须创建新实例并复制数据:
public List<Parent> GetParentList(List<Child> listchild)
{
return listchild.Select(child => new Parent{ ParentProperty = child.ParentProperty }).ToList();
}