将List <entity1>转换为另一个List <entity2> </entity2> </entity1>

时间:2011-05-14 19:09:11

标签: c# entity-framework-4 casting

我想演绎这样的演员:

// 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一直告诉我,我不能做这个演员。任何帮助将不胜感激。

2 个答案:

答案 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中是否有任何内容可以帮助解决这个问题。