MRが楽しい

MRやVRについて学習したことを書き残す

Aggregateを使ってリストの要素と前回の評価値を比較して最大値や合計値を求める

本日は C# の小ネタ枠です。
Aggregate を使ってリストの要素と前回の評価値を比較して最大値や合計値を求める方法についてです。

Aggregate

Aggregate はコレクションにおける前回の評価値と現在の要素を引き渡します。
初回実行時はコレクションにおける最初の要素とその次の要素が引き渡されます。
要素が1つだけの場合は式の評価は行われず、最初の要素をそのまま結果として出力します。
learn.microsoft.com

サンプルコード

Aggregate を使って数値のリストの中から最大値と最小値、合計値を求めるサンプルスクリプトを作成しました。
・AggregateTest.cs

using System.Collections.Generic;
using System.Linq;
using UnityEngine;

public class AggregateTest : MonoBehaviour
{
    void Start()
    {
        List<int> checkNumbers = new List<int> { 0, 5, 1, 4, 2, 3 };

        // リストの中から最大値を取得する
        int maxNumber = checkNumbers.Aggregate((max, next) => max > next ? max : next);
        
        // リストの中から最小値を取得する
        int minNumber = checkNumbers.Aggregate((min, next) => min < next ? min : next);
        
        // リストの合計値を取得する
        int sumNumber = checkNumbers.Aggregate((sum, next) => sum + next);
        
        // 結果を表示する
        Debug.Log($"maxNumber : {maxNumber}, minNumber : {minNumber}, sumNumber : {sumNumber}");
    }
}