本日はC#の小ネタ枠です。
C#でToDictionaryを使ってリストからDictionaryを作成する手順です。
Enumerable.ToDictionary
Enumerable.ToDictionaryメソッドはIEnumerable型からDictionary型を作成します。
作成時に指定された値のキーが重複した場合は例外が発生します。
learn.microsoft.com
List<DictionaryData> dataList = default; // リストからDictionary型を作成する Dictionary<int, DictionaryData> dataDictionary = dataList.ToDictionary(data => data.id);
サンプルスクリプト
キー検索のアクセスを高速化するため、初回アクセス時にリストをDictionary型に変換して保持するサンプルスクリプトを作成しました。
・ToDictionaryTest.cs
using System.Collections.Generic; using System.Linq; using UnityEngine; public class ToDictionaryTest : MonoBehaviour { [Serializable] private class DictionaryData { public int id; public string name; } [SerializeField] private List<DictionaryData> dataList = default; // アクセス時にリストから参照用のDictionaryを作成する private Dictionary<int, DictionaryData> dataDictionary = default; private Dictionary<int, DictionaryData> DataDictionary => dataDictionary ??= dataList.ToDictionary(data => data.id); void Start() { for(int checkId = 0; checkId < 10; checkId++) { var data = DataDictionary[checkId]; Debug.Log($"id: {data.id}, name: {data.name}"); } } }
以下の通り、リストをDictionary型に変換した変数から値を取得できました。

なお指定した値のキーが重複していた場合はArgumentExceptionの例外が発生します。
