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

スポンサーリンク

概要

LinqのMinByメソッドは、コレクションの要素から指定したキーに基づいて最小値を持つ要素を取得するためのメソッドです。

たとえば、数値を格納したリストから最小値を持つ要素を取得する場合、通常のMinメソッドを使用することができます。

しかし、MinByメソッドは、オブジェクトのプロパティなどのように、数値以外のキーに基づいて最小値を持つ要素を取得する場合にも使用することができます。

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

構文

使用例で示すコードで使用するLinqのMinByメソッドの構文は以下のとおりです。

public static TSource MinBy<TSource, TKey>(
  this IEnumerable source, 
  Func<TSource, TKey> keySelector);

引数は、コレクションの要素を表す型TSourceと、キーを表す型TKeyを指定します。また、keySelector引数には、各要素からキーを抽出するためのメソッドを指定します。

MinByの使用例

以下の例では、Personクラスのリストから年齢が最小のPersonオブジェクトを取得する方法を示します。

    
  public class Person
  {
      public string Name { get; set; }
      public int Age { get; set; }
  }
  static void Main(string[] args)
  {
      List persons = new List
      {
          new Person { Name = "アリス", Age = 20 },
          new Person { Name = "ボブ", Age = 25 },
          new Person { Name = "チャーリー", Age = 18 },
          new Person { Name = "デイブ", Age = 22 }
      };
  
      var youngestPerson = persons.MinBy(p => p.Age);
      Console.WriteLine("{0}, {1}.", youngestPerson.Name, youngestPerson.Age);
  }
  // チャーリー, 18.

上記のコードでは、personsリストからMinByメソッドを使用して、年齢が最小のPersonオブジェクトを取得しています。引数には、各Personオブジェクトから年齢を抽出するためのラムダ式を指定しています。取得したPersonオブジェクトのNameプロパティとAgeプロパティを使用して、コンソールに出力しています。

Please follow and like us:

コメント

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