C#和实体框架 - 将List <dynamicproxies ...>转换为List <entity>

时间:2016-08-19 16:23:02

标签: c# entity-framework list generics converter

场景:我有一组使用延迟加载的实体框架实体,因此DynamicProxies。然后有一种方法可以将一些选定的项目传递给覆盖我写为object。我需要将List<DynamicProxies.EntityABCD>(实际上作为object传递)转换为List<Entity>

然而,以这种方式投射列表

dropInfo.Data as List<MyEntity>

将返回null。我甚至无法使用通用方法Cast<T>,因为源列表再次作为object传递。

我也试过

dropInfo.Data as List<object>

但它仍然会返回null。

提前致谢

编辑:管理以获得更清晰的列表

((IList)dropInfo.Data).Cast<MyEntity>()

但是我仍然需要检查错误等。

1 个答案:

答案 0 :(得分:1)

如果您了解对象结构,可以使用动态量词:

var result = ((List<dynamic>)dropInfo.Data).Select(ConvertToMyEntityMethod).ToList();

public static MyEntity ConvertToMyEntity(dynamic obj)
{
     return new MyEntity(){ SomeIntProperty = (int)obj.SomeIntProperty };
}

Dynamic允许您通过反射访问类成员而不会出现编译错误。这对于性能来说是非常糟糕的解决方案,但如果您使用MVVM绑定则非常好。