在c#下。
我是这样写的 Order[] mOrders = entities as Order[];
其中 Order是实体类,entities 是 System.Collections.Generic.List 
系统编译时提示:无法将类型“System.Collections.Generic.List<object>”转换为“Web***.Test.Order[]”=====================================================
另:
如果就转一个可以,如:
Order order = (Order)entities[0] 。
那如果转换为一个 实体数组的话,怎么转换才可以啊?
我目前想到是一个一个转,但麻烦。你们有好办法么?

解决方案 »

  1.   

    为什么要转呢?
    你直接foreach就可以直接用
      

  2.   

    int count = entities .Count;
    Order[] mOrders = new Order[count];
    entities .CopyTo(mOrders);
      

  3.   

    从List转换为Array使用 ToArray 方法。
      

  4.   

    不过说实话,看到List<object>我会认为你还不能够主动地学习,还不能很好地进行独立的软件开发。
      

  5.   

    ArrayList曾经是.net框架中非常重要的东西。正因为其针对的是object,遭到非议,所以才有List<T>。如今如果内部有一个人偷换回来 List<object>,让人对内部的素质难免引起怀疑和担心。
      

  6.   

    sp啥时候升了亚.哈哈,个人水平不一样,可能他刚开始接触.net2.0,泛型是.net 2.0的新特征,也比较重要
      

  7.   

    to greennetboy:
      我用您的办法是可以的。
    ================================================
    to sp1234:
    1、 你说的:从List转换为Array使用 ToArray 方法。
      你说的办法我试过,不行,会提示“无法将类型为“System.Object[]”的对象强制转换为类型“Websharp.Test.Order[]”。
    2、我用的是一个开源的ormap的框架,我看了下你所说的“偷换回来List<object>”,是框架内部的一个方法(查询到数据,将数据放到lsit里面)用的。
    3、谢谢您的忠言!
      

  8.   

    Order[] mOrders = entities as Order[];
    ---------
    怎么能这样写?一个是 list 类型,一个是 Array 类型。应该写成:
    Order[] mOrders = entities.ToArray(typeof(Order)) as Order[];
      

  9.   

    to qp1007:
      按您的方法,编译提示:
    “ToArray”方法没有采用“1”个参数的重载
      

  10.   

    to qp1007:
      按您的方法,编译提示:
    “ToArray”方法没有采用“1”个参数的重载
    ======================================Sorry,这里只是给个类似的提示,这是 ArrayList 的方法,List<T> 的话,直接
    Order[] mOrders = entities.ToArray();就可以了