轉換爲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