本日はC#の小ネタ枠です。
C#でSkipWhileを使ってリストから特定のデータ以降のリストを抽出する手順です。
Enumerable.SkipWhile
Enumerable.SkipWhileメソッドはIEnumerable型から指定された条件が満たされる要素以降のIEnumerableを抽出します。
learn.microsoft.com
int[] amounts = { 0, 5, 10, 15, 20 }; // 10以上の数値が出てくる要素以降のIEnumerableを抽出する int[] query = amounts.SkipWhile(amount => amount >= 10);
サンプルスクリプト
SkipWhileメソッドを使って指定の名前が出てきた以降のリストを抽出するサンプルスクリプトを作成しました。
・SkipWhileTest.cs
using System; using System.Collections.Generic; using System.Linq; using UnityEngine; public class SkipWhileTest : MonoBehaviour { [Serializable] private class IdentifyData { public int id; public string name; } void Start() { List<IdentifyData> dataList = new List<IdentifyData> { new IdentifyData { id = 0, name = "Zero" }, new IdentifyData { id = 1, name = "One" }, new IdentifyData { id = 2, name = "Two" }, new IdentifyData { id = 3, name = "Three" }, new IdentifyData { id = 4, name = "Four" }, new IdentifyData { id = 5, name = "Five" }, new IdentifyData { id = 6, name = "Six" }, new IdentifyData { id = 7, name = "Seven" }, new IdentifyData { id = 8, name = "Eight" }, new IdentifyData { id = 9, name = "Nine" }, }; // Fiveという名前のデータが出てくるまでスキップする var skipDataList = dataList.SkipWhile(data => data.name != "Five"); // 抽出したデータを表示 foreach(var data in skipDataList) { Debug.Log($"id: {data.id}, name: {data.name}"); } } }
以下の通り、指定の名前が出てきた以降のリストを抽出できました。
