如何使用Cast()扩展方法进行上述转换?
e.g。
var aType = anonymousType;
IEnumreable<MyType> = aType.Cast();
解决方案
aType.Select(i => new MyType { } ).ToList();
答案 0 :(得分:15)
您可以将匿名类型转换为Object
的唯一类型。如果您想要任何其他类型,则必须从匿名类型对象中的数据创建这些对象。
示例:
List<MyType> items = aType.Select(t => new MyType(t.Some, t.Other)).ToList();
您应该考虑在获取数据时创建MyType
对象,而不是创建匿名类型的对象。
答案 1 :(得分:3)
aType
是否由IEnumerable<anonymous type>
返回。一个linq查询?
您可能希望将Select
(对元素应用转换函数)用于Cast
,只执行转换。
IEnumerable<MyType> = aCollection.Select(e => SomeExpressionWithE);
答案 2 :(得分:0)
这是一篇可能对您有帮助的文章。虽然我认为Guffa是对的,但您应该在需要时创建一个类的实例。匿名类型不应该以这种方式使用。
这是链接: http://www.codeproject.com/KB/cs/castinganonymous.aspx
答案 3 :(得分:-2)
IEnumreable<MyType> n = (IEnumreable<MyType>)aType;