C# 列表的铸造<;实体1>;转到另一个列表<;实体2>;
我想表演这样的演员阵容:C# 列表的铸造<;实体1>;转到另一个列表<;实体2>;,c#,entity-framework-4,casting,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")); //实体数
// 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"));
//实体数据和实体A_数据具有完全相同的属性:sName和sZip。
List ListData=新列表();
List ListA_Data=(A_Data)ListData.FindAll(item=>item.sName.StartsWith(“A”);
VS2010一直告诉我,我不能做这个演员。任何帮助都将不胜感激。使用Cast
扩展方法:
List<A_Data> ListA_Data = ListData.FindAll(item => item.sName.StartsWith("A")).Cast<A_Data>().ToList();
List ListA_Data=ListData.FindAll(item=>item.sName.StartsWith(“A”)).Cast().ToList();
它无法按您现在的方式工作,因为您试图将IQueryable
转换为A_Data
使用cast
扩展方法:
List<A_Data> ListA_Data = ListData.FindAll(item => item.sName.StartsWith("A")).Cast<A_Data>().ToList();
List ListA_Data=ListData.FindAll(item=>item.sName.StartsWith(“A”)).Cast().ToList();
它的工作方式与您现在的工作方式不同,因为您试图将
IQueryable
强制转换为A_Data
除非明确声明一个类派生自另一个强制转换,否则无法在它们之间强制转换。即使它们具有相同的属性或字段
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中是否有任何东西对此有所帮助。除非明确声明一个类派生自另一个强制转换,否则不能在它们之间进行强制转换。即使它们具有相同的属性或字段
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中是否有任何东西可以帮上忙。谢谢,这很有意义,但是当我尝试时,它仍然不起作用:我甚至尝试了List ListA_Data=ListData.Cast.ToList();我得到一个“System.Data.EnumerableRowCollectionExtension.Cast(System.DataEnumerableRowCollection”是一个“方法”,在给定的上下文中无效。还有其他想法吗?它应该是
.Cast()
(括号-它是一个方法。)您好,谢谢,这很有意义,但是当我尝试时它仍然不起作用:我甚至尝试了List ListA_Data=ListData.Cast.ToList();我得到了一个“System.Data.EnumerableRowCollectionExtension.Cast(System.DataEnumerableRowCollection”是一个“方法”,在给定的上下文中无效。还有其他想法吗?应该是.Cast()
。(括号-这是一种方法。)