[.NET クラスライブラリ Tips][LINQ] コレクションの中から指定したキーに基づいて最大値を持つ要素を取得する(MaxByメソッド)

スポンサーリンク

概要

LinqのMaxByメソッドは、コレクションの中から指定したキーに基づいて最大値を持つ要素を取得するメソッドです。
Maxメソッドとは異なり、キーに基づいて最大値を持つ要素自体を取得することができます。
MaxByメソッドは、Linqの拡張メソッドの一つで、System.Linq名前空間に含まれています。

公式サイト情報はコチラを参照してください。

構文

使用例で示すコードで使用するMaxByメソッドの構文は以下の通りです。

public static TSource MaxBy<TSource, TKey>(this IEnumerable source, Func<TSource, TKey> selector);

引数のsourceは、最大値を検索する対象となる要素のコレクションです。
引数のselectorは、各要素から比較するキーを取得するための関数です。
戻り値の型TSourceは、最大値を持つ要素の型です。

MaxByメソッドの使用例

次の例では、Personクラスのリストから最も年齢の高い人を取得する例を示します。
この例では、PersonクラスのAgeプロパティを比較の基準として指定します。

      using System;
      using System.Collections.Generic;
      using System.Linq;
  class Program
  {
      static void Main(string[] args)
      {
          List<Person> people = new List<Person>()
          {
              new Person() { Name = "Alice", Age = 25 },
              new Person() { Name = "Bob", Age = 30 },
              new Person() { Name = "Charlie", Age = 20 }
          };

          Person oldestPerson = people.MaxBy(p => p.Age);

          Console.WriteLine("The oldest person is {0}, age {1}.", oldestPerson.Name, oldestPerson.Age);
      }
  }

  class Person
  {
      public string Name { get; set; }
      public int Age { get; set; }
  }

出力結果は、”The oldest person is Bob, age 30.”となります。
MaxByメソッドを使用することで、単純なMaxメソッドでは取得できなかった最大値を持つ要素を取得することができます。

Please follow and like us:

コメント

タイトルとURLをコピーしました