リストに固有のアイテムのみを追加する 質問する

リストに固有のアイテムのみを追加する 質問する

ネットワーク上でリモート デバイスがアナウンスされたら、リストに追加します。デバイスが以前に追加されていない場合にのみ、リストに追加します。

アナウンスは非同期ソケット リスナーを介して行われるため、デバイスを追加するコードは複数のスレッドで実行できます。何が間違っているのかわかりませんが、何を試しても重複してしまいます。現在、次の状態になっています.....

lock (_remoteDevicesLock)
{
    RemoteDevice rDevice = (from d in _remoteDevices
                            where d.UUID.Trim().Equals(notifyMessage.UUID.Trim(), StringComparison.OrdinalIgnoreCase)
                            select d).FirstOrDefault();
     if (rDevice != null)
     {
         //Update Device.....
     }
     else
     {
         //Create A New Remote Device
         rDevice = new RemoteDevice(notifyMessage.UUID);
         _remoteDevices.Add(rDevice);
     }
}

ベストアンサー1

重複をなくす必要がある場合は、ハッシュセット

ハッシュセット.追加戻ります間違いアイテムがすでに存在する場合(それがあなたにとって重要な場合)。

@pstrjdsが以下にリンクしているコンストラクタ(またはここRemoteDevice) を使用して等価演算子を定義するか、 ( GetHashCode& Equals)で等価メソッドを実装する必要があります。

おすすめ記事