0

私が保健省で働いているとしましょう。食中毒の苦情を処理し、苦情データを次のように多次元配列に保存しました。

  1. ID - 被害者が食事をしたレストランの 5 桁の ID 番号
  2. 日付 - 食中毒の日付
  3. 名前 - 犠牲者の名前
  4. 年齢 - 被害者の年齢
  5. 電話 - 被害者の電話番号

Array[0] には、最初の苦情のデータが含まれています。Array[0].ID には、最初の苦情のレストラン ID などが含まれます。

配列内で一意の5 桁の ID のリストを抽出するにはどうすればよいですか?

50 件の苦情があるレストランもあれば、1 件だけのレストランもあります。苦情データに表示されるすべての一意のレストラン IDのリストを作成したいと考えています。

var Unique = array.ID.Distinct();

動作しません。私は何を間違っていますか?

4

2 に答える 2

8

Select()最初...

var ids = array.Select(o => o.ID).Distinct();

編集:

こんにちは、理由を教えてください。

まず、あなたが間違ったことについて話しましょう。

var ids = array.ID.Distinct();
  1. 配列IDの存在しないメンバを参照しようとしました。探しているのは、配列内の項目です。ID
  2. コレクションDistinct()ではなく、存在しないメンバーを呼び出そうとしました。

それでは、新しいコードが何をするか見てみましょう。

var ids = array.Select(o => o.ID).Distinct();

これSelect()により、値のみを生成する新しい列挙型が生成されIDます。は別の列挙型を生成し、 から一意の値のみを生成しDistinct()ます。Select()

于 2013-09-27T17:22:53.097 に答える
3

HashSet今後ルックアップを行う予定がある場合は、 a を使用します。

var hashSet = new HashSet<int>(array.Select(i => i.ID));

これにより、重複が自動的に削除され、O(1) に近いルックアップも可能になります。

于 2013-09-27T17:26:54.700 に答える