转换为List<string>
。我想ToList()
但这种方法是行不通的:使用LINQ将'ArrayList'转换为'列表<string>'(或'列表<T>')使用LINQ将
ArrayList resultsObjects = new ArrayList();
List<string> results = resultsObjects.ToList<string>();
转换为List<string>
。我想ToList()
但这种方法是行不通的:使用LINQ将'ArrayList'转换为'列表<string>'(或'列表<T>')使用LINQ将
ArrayList resultsObjects = new ArrayList();
List<string> results = resultsObjects.ToList<string>();
您的代码实际上显示List<ArrayList>
而不是单个ArrayList
。如果你真的有只有一个ArrayList
,你可能会想:
ArrayList resultObjects = ...;
List<string> results = resultObjects.Cast<string>()
.ToList();
的Cast
调用是必需的,因为ArrayList
是弱类型 - 它只是实现IEnumerable
,不IEnumerable<T>
。 LINQ to Objects中几乎所有的LINQ操作符都基于IEnumerable<T>
。
这是假设ArrayList
内的值确实是字符串。如果他们不是,您需要向我们提供更多关于您希望每个项目转换为字符串的信息。
我假设你的第一行是为了ArrayList resultsObjects = new ArrayList();
。
如果ArrayList
里面的对象是特定类型的,你可以使用Cast<Type>
扩展方法:
List<string> results = resultsObjects.Cast<string>().ToList();
如果有ArrayList
要任意对象转换为字符串,就可以使用此:
List<string> results = resultsObjects.Cast<object>().Select(x => x.ToString())
.ToList();
可以使用ArrayList.ToArray()
实现方法具ArrayList
元素转换为object[]
阵列d。
List<ArrayList> resultsObjects = new List<ArrayList>();
resultsObjects.Add(new ArrayList() { 10, "BB", 20 });
resultsObjects.Add(new ArrayList() { "PP", "QQ" });
var list = (from arList in resultsObjects
from sr in arList.ToArray()
where sr is string
select sr.ToString()).ToList();
您还可以使用LINQ的OfType <>方法,这取决于你是否要抛出一个异常,如果在你的ArrayList中的项目之一是没有强制转换为所需的类型。如果arrayList的对象不是字符串,OfType()会忽略它们。
var oldSchoolArrayList = new ArrayList() { "Me", "You", 1.37m };
var strings = oldSchoolArrayList.OfType<string>().ToList();
foreach (var s in strings)
Console.WriteLine(s);
输出:?在.NET中,你如何转换一个ArrayList到一个强类型的泛型列表,而不使用foreach]
Me
You
的可能的复制(http://stackoverflow.com/问题/ 786268 /在净怎么办,你变频-AN-的ArrayList到一个-强类型的泛型列表,withou) – 2016-05-12 23:53:33