ユーザー オブジェクトのコレクションがありますが、ユーザー ID に基づいて個別のユーザーのリストを返す必要があります。
ユーザー オブジェクトの特定のプロパティに基づいて個別の値のみを選択することは可能でしょうか?
Collection<User> users = serializer.Deserialize<Collection<User>>(userCollection);
ユーザー オブジェクト:
UserID
UserName
ありがとう
morelinq の DistinctBy()
メソッドを使用します。
var distinctUsers = users.DistinctBy(user => user.UserID);
または、区別したいものをグループ化し、グループ内の最初の項目を取得して、独自にクエリを作成します。
var distinctUsers = users.GroupBy(user => user.UserID)
.Select(g => g.First());
これは、ハッシュセットを使用することで非常に簡単に解決できます。これを行うには、UserクラスにEqualsとGetHashCodeの両方のオーバーライドがあることを確認するだけで、設定する必要があります。
編集:DavidMが以下で言及するように、クラスのequalsとgethashcodeをオーバーライドすることは、これがUserオブジェクトの通常の比較ケースである場合にのみ価値があります。そうでない場合は、ハッシュセットをカスタム比較機能でインスタンス化できます。この方法を使用することをお勧めします。