You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

List转Array适配ArrayAdapter报错:无法隐式转换List[]到string[]

解决List转string[]的类型转换错误问题

我来帮你搞定这个问题!你遇到的Cannot implicitly convert type 'System.Collections.Generic.List[]' to 'string[]'错误,主要是两个原因导致的:

  • 首先,List<T>并没有InArray()方法,你可能是想调用ToArray(),但就算用了ToArray(),得到的也是ClassName[]类型,而不是string[]——因为你的List里存储的是ClassName对象,不是直接的字符串。
  • 其次,你需要提取每个ClassName对象中的Name属性值,把这些字符串收集起来再转成数组,才能适配ArrayAdapter的需求。

另外,我注意到你代码里还有一个小错误:反序列化的时候用了List<Names>,但Names是你定义的List变量名,不是类名,应该用List<ClassName>才对。

修正后的完整代码

// 初始化存储ClassName对象的List
List<ClassName> namesList = new List<ClassName>(); 

foreach (var property in coinPropery)
{
    // 修正反序列化的类型参数为ClassName
    var propertyList = JsonConvert.DeserializeObject<List<ClassName>>(property.ToString());
    // 将反序列化得到的列表添加到主列表中(注意变量名要对应,这里应该是namesList而不是coins)
    namesList.AddRange(propertyList);
    Console.WriteLine(namesList);
}

// 提取每个ClassName对象的Name属性,转换为string数组
string[] namesArray = namesList.Select(item => item.Name).ToArray();

关键说明

  1. 反序列化修正:把List<Names>改成List<ClassName>,因为ClassName才是你的实体类类型,Names只是你声明的变量名。
  2. 属性提取与数组转换:使用LINQ的Select方法遍历namesList,取出每个对象的Name属性,再调用ToArray()把结果转换成string[]类型,这样就能直接传给ArrayAdapter了。
  3. 变量名规范:建议用更清晰的变量名(比如namesList代替Names),避免和类名混淆,提升代码可读性。

内容的提问来源于stack exchange,提问作者user9198450

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 07:52:12