ホームページ > バックエンド開発 > C++ > LINQ を使用してオブジェクトのリスト内の重複プロパティを効率的にカウントするにはどうすればよいですか?

LINQ を使用してオブジェクトのリスト内の重複プロパティを効率的にカウントするにはどうすればよいですか?

Susan Sarandon
リリース: 2024-12-29 09:33:11
オリジナル
711 人が閲覧しました

How Can I Efficiently Count Duplicate Properties in a List of Objects Using LINQ?

LINQ を使用したオブジェクトのリスト内の重複のカウント

一意のプロパティを持つオブジェクトのリストが与えられた場合、重複プロパティの数を決定するのはプログラミングにおける一般的な要件。 LINQ (言語統合クエリ) 構文を使用すると、このタスクを効果的に実行できます。

GroupBy および OrderBy の使用

基本的なアプローチには、LINQ の GroupBy 演算子と OrderBy 演算子の利用が含まれます。 GroupBy は指定されたプロパティに基づいてリストをグループに分割し、OrderBy は要素数の降順でグループを配置します。

var groupedItems = list.GroupBy(x => x.Property)
                    .Select(x => new { Property = x.Key, Count = x.Count() });

var orderedItems = orderedItems.OrderByDescending(x => x.Count);
ログイン後にコピー

このコードは、指定されたプロパティによってオブジェクトをグループ化し、それぞれのプロパティ内の数を計算します。

オブジェクトのカスタマイズ比較

オブジェクトに直接比較できるプロパティがない場合は、カスタム比較子またはラムダ式を定義できます。たとえば、オブジェクトに一意の ID プロパティがある場合:

var groupedItems = list.GroupBy(x => new { x.Property, x.ID })
                    .Select(x => new { Property = x.Key.Property, Count = x.Count() });
ログイン後にコピー

複数のプロパティの処理

グループ化の複数のプロパティを考慮するには、複合キーを使用できます。

var groupedItems = list.GroupBy(x => new { x.Property1, x.Property2 })
                    .Select(x => new { Property1 = x.Key.Property1, Property2 = x.Key.Property2, Count = x.Count() });
ログイン後にコピー

拡張機能を使用した実装メソッド

コードをより簡潔にするために、拡張メソッドを使用できます。

public static IEnumerable<T> CountDuplicates<T>(this IEnumerable<T> list, Func<T, object> keySelector)
{
    return list.GroupBy(keySelector)
                .Select(x => new { Key = x.Key, Count = x.Count() });
}
ログイン後にコピー

この拡張メソッドは、指定されたキー セレクター関数に基づいて重複をカウントする再利用可能な方法を提供します。

LINQ の機能を活用し、これらのテクニックを活用することで、開発者は、リスト内の重複値を含むデータを効率的に管理および分析できます。オブジェクト。

以上がLINQ を使用してオブジェクトのリスト内の重複プロパティを効率的にカウントするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート