2016-11-17 14 views
2

私はArrayListを持っており、ArrayListの項目を文字列のリストに追加する必要があります。C#ArrayListを文字列のリストに変換しますか?

listString.AddRange(new List<string>((string[])this.arrayList.ToArray())) 

しかし、これは

型のオブジェクトをキャストすることができませんの例外を与える 'のSystem.Object []'

'[]可能System.String' をタイプする:私は、次のことを試してみました

注意:フレームワーク4.0で働いているので、私は.Castを使用できません。

答えて

3

使用ToArray(typeof(string))List<string>

listString.AddRange((string[])this.arrayList.ToArray(typeof(string))); 
+0

それは実際に働いた。それは大きな助けとなりました。どうもありがとう。 –

1

文字列のリストに追加するには、配列リストの各要素を文字列に変換する必要があります。これを行うためのより良いオプションは次のようである次のオブジェクトへ

listString.AddRange(arrayList.ToArray().Select(x => x.ToString()).ToList()); 
+0

私はSelect/Cast/ToList()を使用できません。これらすべての定義はArrayListにはありません。しかし、SveinFidjestølの答えはうまくいった。 –

+0

それを動作させるには、usingセクションにusing System.Linq;を追加する必要があります –

2

LINQは、すべてのタイプがキャストされているTのIEnumerableをを(キャストが有効であると仮定)を返すキャスト法を、持っているので、私は思いますお勧め:

this.ArrayList.Cast<string>().ToList(); 

や、あなたのlistStringが既に存在した場合:

listString.AddRange(this.ArrayList.Cast<string>()); 
+0

はい、しました。ただし、Cast()の[MSDN](https://msdn.microsoft.com/en-us/library/bb341406(v=vs.100).aspx)をチェックしてください。それは3.5 – MarkO

-4

はコードの下に理解するようにしてください:このコードは、問題を解決します。配列を作成し、型の変数に追加する前に、より具体的な配列型string[]にキャストする

ArrayList myAL = new ArrayList(); 
myAL.Add("The"); 
myAL.Add("quick");  
myAL.Add("brown"); 
myAL.Add("fox"); 

// Creates and initializes a new Queue. 
Queue myQueue = new Queue(); 
myQueue.Enqueue("jumped"); 
myQueue.Enqueue("over"); 

// Displays the ArrayList and the Queue. 
Console.WriteLine("The ArrayList initially contains the following:"); 
PrintValues(myAL, '\t'); 
Console.WriteLine("The Queue initially contains the following:"); 
PrintValues(myQueue, '\t'); 

// Copies the Queue elements to the end of the ArrayList. 
myAL.AddRange(myQueue); 
+0

以来サポートされています実際これは理解するのが難しいです。なぜそれが "理解しようとする"時間を費やすのか分かりません... –

1

それは私には思われる、最も安全な方法:

listString.AddRange(arrayList.ToArray().Select(e => e.ToString())); 
2

次のようにして、以下のコードを試すことができます。

ArrayList al = new ArrayList(); 
List<string> lst = new List<string>(); 
foreach (string l in al) 
{ 
    lst.Add(l); 
} 
+0

これは正しいが効率的ではない方法です。 –

0
ArrayList arrayList = new ArrayList {"A","B","C" }; 
List<string> listString = new List<string>(); 
foreach (string item in arrayList) 
{ 
    listString.Add(item); 
} 
var data = listString; 
関連する問題