この記事は機械翻訳のミラー記事です。元の記事にジャンプするにはこちらをクリックしてください。
建築家
建築家
リスト
放送
茶屋
インテリジェントAI会話
.NETキャリア&テクニカルカレッジ
ちっちゃいなクズブログ
この版
利用者
Architect_Programmer_Code農業ネットワーク
»
建築家
›
プログラミング
›
.Net/C#
›
C# Distinctは条件付きでオブジェクトの重複を除去します
眺める:
24681
|
答える:
1
[出典]
C# Distinctは条件付きでオブジェクトの重複を除去します
[リンクをコピー]
クズども
掲載地 2018/08/17 10:56:00
|
|
|
|
通常、配列の重複除去にはC#でDistinctを使い、intやstringなどの一般的な配列ベースのデータ型を使います。オブジェクトの重複除去にも使えます。C#のDistinctメソッドの定義を見てみましょう。
重い負荷がかかるため、最初のパラメータは拡張方法を加えます。拡張方法について、百度にご理解ください。
Distinctのオブジェクト重複除去について学びましょう。今、Peopleクラスがあるとします。
ログインが見えます。
ListPeoleオブジェクトの集合を宣言します:
ログインが見えます。
パラメータを一切持たずにListPeopleにDistinct法を用いてみましょう。その結果は以下の通りです。
Distinctメソッドにパラメータがない場合、オブジェクトセット内のp、p1、p2を重複除去し、同じメンバー値の異なるオブジェクトに対して重複除去は行われないことがわかります。
同じIDを持つ人については、同じ人としてカウントする要件があります。セット内の重複しない人(同じIDに対して1人だけ出力)。ここで2つ目のDistinct方法を用います。このメソッドは、入力されるパラメータがIEqualityComparer型であることを必要とし、汎用インターフェースを継承し、以下のコードを追加します。
ログインが見えます。
IEqualityComparerインターフェースを継承し、EqualsとGetHashCodeメソッドを実装する必要があります。
比較すると、PeopleCompareByIDを持つエンティティを入力できます:
ログインが見えます。
このランの結果は以下の通りです。
IDによる重複除去の効果を実現しました。
さらに要件が変更されました。IDと省は同一人物であり、その人の情報を出力するには同じです(同じ人は任意に出力可能です)。ここでID=0と省="湖北"が重複しているのがわかります。これを重複化するために別のクラス、つまりIEqualityComparerから継承します:
ログインが見えます。
同様に、Distinct手法を用いる場合、PeopleCompareByIDAndProvinceのインスタンスが渡されます:
ログインが見えます。
走り終えた結果は以下の通りです:
望んだ効果を達成しました。
この方法は、3つ以上のオブジェクトメンバーによる重複除去の問題に直面した場合に、オブジェクトが重複しているかどうかを判別するために使用できます。
以上は私の謙虚な意見です。
先の:
MYSQL:WARN: Establishing SSL connection without server's identity verificatio...
次に:
C# Deep Dive - デストラクターズ
関連記事
•
MySQL [冗長性を除去して残す]SQL文がアイデアの要約を完成させます
•
.net/c#ファイル処理ツール[重複削除、行の始まりと終わりの文字列]とソースコード付き
•
.net/c# ファイル内容の重複除去コード
•
c# ラムダ式集合の脱集団化による最小値
閲覧したセクション
サーバー構成
フロントエンドフレーム
PHP
ジャワ
技術チャット
Microsoft SQL Server
Memcached/Redis
その他の番組編成
Windows/Linux
免責事項:
Code Farmer Networkが発行するすべてのソフトウェア、プログラミング資料、記事は学習および研究目的のみを目的としています。 上記の内容は商業的または違法な目的で使用されてはならず、そうでなければ利用者はすべての結果を負うことになります。 このサイトの情報はインターネットからのものであり、著作権紛争はこのサイトとは関係ありません。 ダウンロード後24時間以内に上記の内容を完全にパソコンから削除してください。 もしこのプログラムを気に入ったら、正規のソフトウェアを支持し、登録を購入し、より良い本物のサービスを受けてください。 もし侵害があれば、メールでご連絡ください。
Mail To:help@itsvse.com