如何将匿名类型转换为类型?

时间:2009-05-23 13:13:37

标签: c#

如何使用Cast()扩展方法进行上述转换?

e.g。

var aType = anonymousType;

IEnumreable<MyType> = aType.Cast();

解决方案

aType.Select(i => new MyType { } ).ToList();

4 个答案:

答案 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;

http://msdn.microsoft.com/en-us/library/ms173105.aspx