C#のLINQでMaxBy、MinByを使って最大・最小の要素を取得する

2024年3月19日火曜日

C#

t f B! P L

.NET 6で追加されたMaxBy、MinByの概要

.NET 6のリリースにより、LINQにMaxByMinByメソッドが追加されました。これらのメソッドは、特定の基準に基づいてコレクション内の最大値や最小値を持つ要素を簡単に検索できるようになっています。これまでは、このような操作を行うには追加の作業やカスタムロジックが必要でしたが、MaxByMinByの導入により、コードの簡潔性と読みやすさが向上しました。

スポンサーリンク

MaxByの使い方

MaxByメソッドを使うと、プロパティや条件に基づいてコレクション内で最大の要素を簡単に見つけることができます。以下のサンプルでは、いくつかの商品を表すオブジェクトのリストから、最も高価な商品を見つける方法を示しています。

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

class Product
{
    public string Name { get; set; }
    public decimal Price { get; set; }
}

class Program
{
    static void Main()
    {
        List<Product> products = new List<Product>
        {
            new Product { Name = "りんご", Price = 200 },
            new Product { Name = "メロン", Price = 1200 },
            new Product { Name = "バナナ", Price = 190 }
        };

        var mostExpensiveProduct = products.MaxBy(p => p.Price);
        Console.WriteLine($"最も高価な商品: {mostExpensiveProduct.Name} - {mostExpensiveProduct.Price}円");  // 最も高価な商品:メロン - 1200円
    }
}

この例では、MaxByメソッドを使用して、Priceプロパティが最大のProductオブジェクトを見つけています。結果として、"メロン"が最も高価であることが表示されます。

MinByの使い方

MinByの使い方はMaxByと基本的に同じです。このメソッドは、指定された基準に基づいて最小の要素を返します。前の例を転用して、最も安価な商品を見つける例を示します。

var leastExpensiveProduct = products.MinBy(p => p.Price);
Console.WriteLine($"最も安価な商品: {leastExpensiveProduct.Name} - {leastExpensiveProduct.Price}円");

このコードスニペットでは、MinByを使用して最も安価な商品を見つけています。結果は"バナナ"として出力されます。

Min、Maxとの違い

MinByMaxByと、MinMaxメソッドとの主な違いは、MinMaxが単に最小値や最大値を返すのに対し、MinByMaxByはその値を持つ要素自体を返す点です。これにより、最小値や最大値を持つ要素の他のプロパティにアクセスすることが容易になります。これは、特に要素が複雑なオブジェクトである場合に便利です。

まとめ

.NET 6におけるMaxByMinByの導入によって、LINQを使ったデータ操作をより効率的かつ分かりやすく記述できるようになりました。

スポンサーリンク
スポンサーリンク

このブログを検索

Profile

自分の写真
Webアプリエンジニア。 日々新しい技術を追い求めてブログでアウトプットしています。
プロフィール画像は、猫村ゆゆこ様に書いてもらいました。

仕事募集もしていたり、していなかったり。

QooQ