ArrayList
をList<string>
使用するLINQに変換したいと思います。私は試しToList()
ましたが、そのアプローチは機能していません:
ArrayList resultsObjects = new ArrayList();
List<string> results = resultsObjects.ToList<string>();
ArrayList
をList<string>
使用するLINQに変換したいと思います。私は試しToList()
ましたが、そのアプローチは機能していません:
ArrayList resultsObjects = new ArrayList();
List<string> results = resultsObjects.ToList<string>();
あなたのコードは実際にList<ArrayList>
は単一ではなくを示していArrayList
ます。本当に1つしかない場合はArrayList
、おそらく次のようにします。
ArrayList resultObjects = ...;
List<string> results = resultObjects.Cast<string>()
.ToList();
は弱く型付けされているため、このCast
呼び出しが必要です。これは、を実装するだけで、を実装しません。LINQ to ObjectsのほとんどすべてのLINQ演算子は、に基づいています。ArrayList
IEnumerable
IEnumerable<T>
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内の項目の1つが目的の型にキャストできない場合に例外を発生させるかどうかに応じて、LINQのOfType<>メソッドを使用することもできます。arrayListに文字列ではないオブジェクトが含まれている場合、OfType()はそれらを無視します。
var oldSchoolArrayList = new ArrayList() { "Me", "You", 1.37m };
var strings = oldSchoolArrayList.OfType<string>().ToList();
foreach (var s in strings)
Console.WriteLine(s);
出力:
Me
You
メソッドを使用してArrayList
要素をobject[]
配列に変換できます。ArrayList.ToArray()
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();