【C#】IEnumerableをListに変換し、ListをIEnumerableに戻す方法を解説
IEnumerableとは
IEnumerableは、IEnumeratorインターフェースを返す単一のメソッドGetEnumerator()を定義したインターフェースです。列挙(反復処理)が可能なすべての非ジェネリックコレクションの基底インターフェースとして機能します。
IEnumerableを実装したコレクションに対しては読み取り専用のアクセスが可能となり、foreachステートメントを使って要素を順番に取り出すことができます。
Listとは
Listクラスは、インデックスを使ってアクセスできるオブジェクトのリストを表します。System.Collections.Generic名前空間に属しており、ジェネリック型として扱えます。
Listクラスを使用すると、整数や文字列など、さまざまな型のコレクションを作成できます。また、要素の検索・並べ替え・追加・削除など、リストを操作するための豊富なメソッドも提供されています。
例1:IEnumerableからListへの変換
IEnumerableの各要素をループで取り出し、ListのAdd()メソッドで追加することで変換できます。LINQのToList()メソッドを使えば、より簡潔に変換することも可能です。
static void Main(string[] args) {
List<int> list = new List<int>();
IEnumerable<int> enumerable = Enumerable.Range(1, 5);
// IEnumerableの要素をListに追加
foreach (var item in enumerable) {
list.Add(item);
}
foreach (var item in list) {
Console.WriteLine(item);
}
Console.ReadLine();
}出力結果
1
2
3
4
5
例2:ListからIEnumerableへの変換
ListをIEnumerableに戻すには、AsEnumerable()メソッドを使用します。これにより、ListのインスタンスをIEnumerable型の変数に代入できるようになります。
static void Main(string[] args) {
List<int> list = new List<int>();
IEnumerable<int> enumerable = Enumerable.Range(1, 5);
foreach (var item in enumerable) {
list.Add(item);
}
foreach (var item in list) {
Console.WriteLine(item);
}
// ListをIEnumerableに変換
IEnumerable<int> enumerableAfterConversion = list.AsEnumerable();
foreach (var item in enumerableAfterConversion) {
Console.WriteLine(item);
}
Console.ReadLine();
}出力結果
1
2
3
4
5
1
2
3
4
5
まとめ
IEnumerableからListへの変換にはforeachによる手動追加やToList()メソッドが利用でき、逆にListからIEnumerableへの変換にはAsEnumerable()メソッドが便利です。用途に応じてこれらの変換を使い分けることで、柔軟なコレクション操作が実現できます。
-
Windows 10/11でレガシーBIOSからUEFIへ変換する方法【MBR2GPT完全ガイド】
古いバージョンのWindowsでは、レガシーBIOS(MBR)からUEFI(GPT)へ変換するには、OS全体を再インストールするしかありませんでした。しかし、Windows 10には「MBR2GPT」というシンプルなツールが標準搭載され、わずか2つのコマンドでレガシーBIOSからUEFIへの変換が可能になりました。この記事では、Windows 10でレガシーBIOSをUEFIに変換する具体的な手順を解説します。なお、Windows 11ユーザーの場合は何もする必要がありません。デフォルトでUEFIモードが有効になっているためです。レガシーBIOSをUEFIに変換する理由とは?レガシーBIOSか
-
JavaScriptで<select>リストの項目を事前選択(プリセレクト)する方法
JavaScriptを使って<select>リストの項目を事前に選択状態にするには、selectedIndexプロパティを使用します。このプロパティに、あらかじめ選択しておきたい項目のインデックス番号を設定するだけで実現できます。<script>タグ内での記述方法は以下のとおりです。add_select_idには<select>タグに付けたidを、add_item_indexには数値のインデックスを指定します。なお、このインデックスは0から始まる点に注意してください。たとえば先頭の項目は「0」、2番目の項目は「1」となり、事前選択したい項目に対応する番号を設