ホームページ >バックエンド開発 >C++ >特定のオブジェクトプロパティでLINQの個別()メソッドを使用するにはどうすればよいですか?

特定のオブジェクトプロパティでLINQの個別()メソッドを使用するにはどうすればよいですか?

Barbara Streisand
Barbara Streisandオリジナル
2025-02-02 09:16:08280ブラウズ

How Can I Use LINQ's Distinct() Method on Specific Object Properties?

一意のオブジェクトプロパティにlinqの個別()を使用して

linqのDistinct()メソッドは、シーケンスから重複したアイテムを効率的に削除します。 ただし、多くの場合、オブジェクト全体ではなく、特定のオブジェクトプロパティに基づいて一意性を特定する必要があります。

例:id に基づく一意の人

プロパティを備えたクラスがあるとしましょう。 IDに基づいてユニークな人のリストを取得するには、リストをPersonでグループ化し、各グループの最初の人を選択します。 Id Id

複数のプロパティの処理
<code class="language-csharp">List<Person> distinctPeople = allPeople
    .GroupBy(p => p.Id)
    .Select(g => g.First())
    .ToList();</code>

複数のプロパティ(例えば、および

)にわたって一意性を確保するには、グループ化キーとして匿名タイプを作成します。

IdFavoriteColor重要な注意:クエリプロバイダーの互換性

<code class="language-csharp">List<Person> distinctPeople = allPeople
    .GroupBy(p => new { p.Id, p.FavoriteColor })
    .Select(g => g.First())
    .ToList();</code>

グループが空の場合、一部のクエリプロバイダー(エンティティフレームワークコアの古いバージョンなど)は例外をスローする場合があります。 そのような場合、に置き換えます。

を返す場合、コードでその可能性を処理する必要があります。

First()EF Core(Pre-version 6)solution FirstOrDefault()FirstOrDefault() null 6以前のEFコアバージョンの場合、潜在的な空のグループを処理するために、より堅牢なアプローチが必要です。 詳細なソリューションについては、このスタックオーバーフロー回答を参照してください:

https://www.php.cn/link/7dd21654ce1c39ec7632d219e8e71f11

以上が特定のオブジェクトプロパティでLINQの個別()メソッドを使用するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。