如何将我的“Person”类型列表(由我的数据库创建)转换为“myPerson”类型,而不出现错误。
我尝试过这样做:
DataClasses1DataContext d = new
DataClasses1DataContext(MainWindow.mySqlClass.GetConnection());
var query = from pers in d.Person select pers;
personen = query.ToList();
newPerson = personen.Cast<myPerson>().ToList();
但我只收到一个“System.InvalidCastException”错误。
public partial class myPerson : Person
{
public override string ToString()
{
return Name + " " + Nachname;
}
public myPerson(System.Data.Linq.EntitySet<Bilder> bilder, string geschlecht, int iD, string nachname, string name)
{
Bilder = bilder;
Geschlecht = geschlecht;
ID = iD;
Nachname = nachname;
Name = name;
}
}
Linq创建的类(仅列出前几行):
public partial class Person : INotifyPropertyChanging, INotifyPropertyChanged
{
private static PropertyChangingEventArgs emptyChangingEventArgs = new PropertyChangingEventArgs(String.Empty);
private int _ID;
private string _Nachname;
private string _Name;
private string _Geschlecht;
private EntitySet<Bilder> _Bilder;
有没有人知道如何将类型为Person的List转换为类型为myPerson的List?
还是说有没有办法创建一个“查询”,可以将Person转换为myPerson?
MyPerson
类中添加一个接受Person
实例的构造函数,然后使用Select(x => new MyPerson(x))
代替Cast<MyPerson>()
。 - MakePeaceGreatAgainPerson
派生了myPerson
(应该是MyPerson
)。我建议改用一个接口IPerson
,两者都实现,并在MyPerson
中有一个Person
字段,这样你就不必不必要地复制东西了。(参见“组合优于继承”) - FildorSelect
呢?强制类型转换并不会自动映射任何内容,它只是将对象转换为另一种类型,也就是允许您将相同的对象视为另一种兼容类型。如果这不可能,它就会抛出异常。 - Panagiotis Kanavos