Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 无法将arraylist转换为字符串数组_C# - Fatal编程技术网

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

C# 无法将arraylist转换为字符串数组,c#,C#,您好,我需要有关此问题的帮助,因为我无法将arraylist转换为string数组。错误表明: 无法将System.Array类型隐式转换为字符串[],显式 转换存在 问题来自ToArray()函数。我可以知道是什么问题吗 非常感谢您的帮助:)我不明白您为什么需要原始ArrayList集合,您应该将其制作为列表,然后提取Id: 因此: public string[] getallTourID() { ArrayList TourIDs = new ArrayLis

您好,我需要有关此问题的帮助,因为我无法将
arraylist
转换为
string数组
。错误表明:

无法将System.Array类型隐式转换为字符串[],显式 转换存在

问题来自
ToArray()
函数。我可以知道是什么问题吗


非常感谢您的帮助:)

我不明白您为什么需要原始
ArrayList
集合,您应该将其制作为
列表
,然后提取Id:

因此:

    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));
    }
如果由于某种原因无法执行此操作,则使用仅返回源集合中特定类型的对象

return TourCollections.Select(t => t.getId).ToArray();
返回TourIDs.OfType().ToArray();

我不明白您为什么需要原始
数组列表
集合,您应该将其设置为
列表
,然后提取Id:

因此:

    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));
    }
如果由于某种原因无法执行此操作,则使用仅返回源集合中特定类型的对象

return TourCollections.Select(t => t.getId).ToArray();
返回TourIDs.OfType().ToArray();

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

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


实际上,您可以通过将ToArray(typeof(string))
的结果转换为string[]
来做您想做的事情,但通常的现代“Csharpic”方法是linq投影。

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

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

实际上,您可以通过将ToArray(typeof(string))
的结果转换为string[]
来做您想做的事情,但通常的现代“Csharpic”方法是linq投影。

尝试以下方法:

解决方案1:

using System.Linq;

public string[] getallTourID()
{
    return TourCollections.Select(o => o.getId).ToArray();
}
解决方案2:

string[] array = TourIDs.ToArray(typeof(string)) as string[];
试试这个:

解决方案1:

using System.Linq;

public string[] getallTourID()
{
    return TourCollections.Select(o => o.getId).ToArray();
}
解决方案2:

string[] array = TourIDs.ToArray(typeof(string)) as string[];
使用以下代码

String[] array= (String[])TourIDs.ToArray(typeof(string));
有关更多信息,请参阅使用以下代码

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

欲了解更多信息,请参考

那么为什么拒绝投票?有很多方法可以将该列表转换为字符串数组,但我已经发布了他想要的代码片段,没有理由的拒绝投票,因为它被接受为答案?!!!请让我知道为什么?因为人们认为这不是解决OP问题的最佳方法,所以会出现否决票。(顺便说一句,我没有否决你的答案)这可能不是解决OP问题的最佳方式,但这是有效的答案,不值得否决。否决票是指错误的答案和非常糟糕的尝试@Aria我也不认为你的答案值得任何否决票,但最终这只是看到问题及其答案的成员的意见。那么为什么否决票?有很多方法可以将该列表转换为字符串数组,但我已经发布了他想要的代码片段,没有理由的否决票,因为它被接受为答案?!!!请让我知道为什么?因为人们认为这不是解决OP问题的最佳方法,所以会出现否决票。(顺便说一句,我没有否决你的答案)这可能不是解决OP问题的最佳方式,但这是有效的答案,不值得否决。否决票是指错误的答案和非常糟糕的尝试@我认为你的答案也不值得任何否决票,但最后,看到问题及其答案的只是议员的意见。