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问题的最佳方式,但这是有效的答案,不值得否决。否决票是指错误的答案和非常糟糕的尝试@我认为你的答案也不值得任何否决票,但最后,看到问题及其答案的只是议员的意见。