我想演绎这样的演员:
// Entity Data and Entity A_Data has exactly the same properties: sName and sZip.
List<Data> ListData = new List<Data>();
List<A_Data> ListA_Data = (A_Data)ListData.FindAll(item => item.sName.StartsWith("A"));
VS2010一直告诉我,我不能做这个演员。任何帮助将不胜感激。
答案 0 :(得分:3)
使用Cast<T>
扩展名方法:
List<A_Data> ListA_Data = ListData.FindAll(item => item.sName.StartsWith("A")).Cast<A_Data>().ToList();
它现在的方式不起作用,因为您试图将IQueryable<Data>
转换为A_Data
。
答案 1 :(得分:2)
除非明确声明一个类派生自另一个强制转换,否则不能在它们之间进行转换。即使它们具有相同的属性或字段。
class Data { public string Name { get; set; } public string Zip { get; set; } }
class AData { public string Name { get; set; } public string Zip { get; set; } }
Data data = new Data { Name = "Foo", Zip = "Bar" };
AData adata = (AData)data; // doesn't work
在这种情况下你需要一个转换器方法:
AData ToAData(Data data)
{
return new AData { Name = data.Name, Zip = data.Zip };
}
不确定EF4中是否有任何内容可以帮助解决这个问题。