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();
关键说明
- 反序列化修正:把
List<Names>改成List<ClassName>,因为ClassName才是你的实体类类型,Names只是你声明的变量名。 - 属性提取与数组转换:使用LINQ的
Select方法遍历namesList,取出每个对象的Name属性,再调用ToArray()把结果转换成string[]类型,这样就能直接传给ArrayAdapter了。 - 变量名规范:建议用更清晰的变量名(比如
namesList代替Names),避免和类名混淆,提升代码可读性。
内容的提问来源于stack exchange,提问作者user9198450
相关产品推荐
相关产品推荐

