Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 列表的铸造<;实体1>;转到另一个列表<;实体2>;_C#_Entity Framework 4_Casting - Fatal编程技术网

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()
。(括号-这是一种方法。)