日期:2014-05-18  浏览次数:20829 次

请问如何将IList转换为List,解决就给分!
同题~

------解决方案--------------------
C# code

private List<T> Convert(System.Collections.IList listObjects)
{
    List<T> convertedList = new List<T>();

    foreach (object listObject in listObjects)
    {
        convertedList.Add((T)listObject);
    }

    return convertedList;
}

------解决方案--------------------
直接强制转换。
------解决方案--------------------
首先,直接强制转换很可能会异常,毕竟不止List实现了这个接口

然后,一楼的办法是最初级的,很没必要。

我的解答是。
C# code

IList<T> inter;
List<T> result = new List<T>(inter);

------解决方案--------------------
很明显,你的代码中,q.List() 是IList类型,而不是IList<T>类型,所以你必须先将q.List()强制转换成IList<T>,或者将q.List()转换成ArrayList了:
C# code

ArrayList output = new ArrayList(q.List());
return output;

------解决方案--------------------
探讨
我用了您的方法:
List <T> output = new List <T>(q.List());
return output;

可是报错,说没有List <T>(System.Collections.IList list)这个方法:
Error 2 The best overloaded…

------解决方案--------------------
C# code

/**//// <summary>
    /// 转换IList<T>为List<T>
    /// </summary>
    /// <typeparam name="T">指定的集合中泛型的类型</typeparam>
    /// <param name="gbList">需要转换的IList</param>
    /// <returns></returns>
    public static List<T> ConvertIListToList<T>(IList gbList) where T : class
    {
        if (gbList != null && gbList.Count > 1)
        {
            List<T> list = new List<T>();
            for (int i = 0; i < gbList.Count; i++)
            {
                T temp = gbList[i] as T;
                if (temp != null)
                    list.Add(temp);
            }
            return list;
        }
        return null;
    }