.NET Core(C#): 配列/List/Dictionary/HashSet変換方法

はじめに

  • 次の環境を使用して動作確認しています。
    OSWindows 10(64ビット)
    IDEMicrosoft Visual Studio Community 2019(16.8.5) + C#(8.0)
    パッケージMicrosoft.NET.Test.Sdk 16.10.0
    xunit 2.4.1
    xunit.runner.visualstudio 2.4.3
    Moq 4.16.1
  • 実装を簡単にするためにLinq(System.Linq)を使用しています。
    Linqの書き方としてクエリ構文、メソッド構文がありますが、ここではメソッド構文を使用しています。
  • 完全なソースコードはこちらで公開しています。

変換方法のサンプル

  • Linqの多くの機能はIEnumerable<>拡張メソッド(Enumerable)として実装されています。そのため、IEnumerable<>を実装している配列やリスト等は同様に変換可能です。サンプルでは入力として配列を指定していますが、List型などでも同様に機能します。
  • 変換元IEnumerable<>を実装している配列やリスト等であれば、変換元に関わらず変換先に合わせて、ToArray(), ToList(), ToDictionary(), ToHashSet()を実行することで変換できます。
  • 型変換や編集した値を使用してリストなどを生成したい場合、Select()を使用します。Select()の引数で渡した関数(ラムダ式)の戻り値型が、新しいリストの基の型になります。
  • リスト上の複数要素を使って生成した値のリストを作成する場合、Enumerable.Range()を使うと簡潔に実現できる場合があります。

参考として、前述のサンプルで使用しているメソッドやクラスを次に示します。