代码之家  ›  专栏  ›  技术社区  ›  Vikas

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

c#
  •  4
  • Vikas  · 技术社区  · 16 年前

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

    例如

    var aType = anonymousType;
    
    IEnumreable<MyType> = aType.Cast();
    

    通过解决

    aType.Select(i => new MyType { } ).ToList();
    
    4 回复  |  直到 12 年前
        1
  •  15
  •   Guffa    12 年前

    唯一可以将匿名类型强制转换为的类型是 Object . 如果需要任何其他类型,则必须从匿名类型对象中的数据创建这些对象。

    例子:

    List<MyType> items = aType.Select(t => new MyType(t.Some, t.Other)).ToList();
    

    您应该考虑创建 MyType 对象已经在获取数据时,而不是创建匿名类型的对象。

        2
  •  3
  •   Dario    16 年前

    aType 是一个 IEnumerable<anonymous type> 是否由Linq查询返回?

    你可能想用 Select (将转换函数应用于元素)注入 Cast 它只是执行一个演员表。

    IEnumerable<MyType> = aCollection.Select(e => SomeExpressionWithE);
    
        3
  •  0
  •   Gerardo Contijoch    16 年前

    这篇文章可能对你有所帮助。尽管我认为Guffa是对的,但只要需要,您就应该创建类的实例。匿名类型不应该这样使用。

    链接如下: http://www.codeproject.com/KB/cs/castinganonymous.aspx

        4
  •  -2
  •   MiffTheFox    16 年前
    IEnumreable<MyType> n = (IEnumreable<MyType>)aType;
    

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