使用LINQ将'ArrayList'转换为'List <string>'(或'List <T>')

Elv*_*vin 17 c# linq collections

我想将一个转换ArrayListList<string>使用LINQ.我试过ToList()但这种方法不起作用:

ArrayList resultsObjects = new ArrayList();
List<string> results = resultsObjects.ToList<string>();
Run Code Online (Sandbox Code Playgroud)

Jon*_*eet 30

您的代码实际上显示的是一个List<ArrayList>而不是一个ArrayList.如果你真的只有一个ArrayList,你可能想要:

ArrayList resultObjects = ...;
List<string> results = resultObjects.Cast<string>()
                                    .ToList();
Run Code Online (Sandbox Code Playgroud)

Cast调用是必需的,因为它ArrayList是弱类型的 - 它只实现IEnumerable,而不是IEnumerable<T>.LINQ to Objects中的几乎所有LINQ运算符都基于IEnumerable<T>.

这是假设ArrayList真正的值是字符串.如果不是,您需要向我们提供有关您希望如何将每个项目转换为字符串的更多信息.