无法将arraylist转换为字符串数组

时间:2017-12-30 11:27:56

标签: c#

    public string[] getallTourID()
    {
        ArrayList TourIDs = new ArrayList();
        foreach (Tour o in TourCollections) //TourCollections is an arraylist of tour objects
        {
            TourIDs.Add(o.getID); //ID is a string from the tour object
        }
        return TourIDs.ToArray(typeof(string));
    }

嗨,我在这个问题上需要帮助,我无法将arraylist转换为string array。错误说:

  

无法将System.Array类型隐式转换为string [],一个显式的   转换存在

问题来自ToArray()功能。我可以知道这是什么问题吗?

非常感谢帮助:)

4 个答案:

答案 0 :(得分:2)

我不明白为什么你需要一个原始ArrayList集合,你应该把它变成List<Tour>,然后提取Id:

因此:

return TourCollections.Select(t => t.getId).ToArray();

如果由于某种原因你不能这样做,那么使用OfType只返回某个类型的源集合中的对象。

return TourIDs.OfType<string>().ToArray();

答案 1 :(得分:1)

要解决您想要的问题,您只需使用简单的linq查询并避免使用任何中间显式数组/列表:

using System.Linq;

public string[] getallTourID()
{
    return TourCollections.Select(o => o.getId).ToArray();
}

可以实际上通过转换ToArray(typeof(string))as string[]的结果来实现你想要的东西,但通常的现代“Csharpic”方法是linq投影。

答案 2 :(得分:1)

试试这个:

解决方案1:

string[] array = TourIDs.ToArray(typeof(string)) as string[];

解决方案2:

String[] array= (String[])TourIDs.ToArray(typeof(string));

答案 3 :(得分:0)

使用以下代码

  TourIDs.ToArray(typeof(string)) as string[];

有关详细信息,请参阅https://www.dotnetperls.com/convert-arraylist-array