クラス IComparable を実装したり、GetHashCode をオーバーライドしたりすることなく、重複を削除する簡単な方法を探しています。
これはlinqで実現できると思います。私はクラスを持っています:
class Person
{
public string Name;
public ing Age;
}
私は約500人のリストを持っていますList<Person> someList = new List<Person()
今、同じ名前の人を削除したいのですが、重複がある場合は、年齢の高い人を保持したいと考えています。言い換えれば、リストがある場合:
Name----Age---
Tom, 24 |
Alicia, 22 |
Alicia, 12 |
私は次のように終わりたいと思います:
Name----Age---
Tom, 24 |
Alicia, 22 |
クエリでこれを行うにはどうすればよいですか? 私のリストはそれほど長くないので、ハッシュ セットを作成したり、IComparable インターフェイスを実装したりしたくありません。linqクエリでこれを行うことができればいいでしょう。
これは、次のような groupBy 拡張メソッドで実行できると思います。
var people = // the list of Person
person.GroupBy(x=>x.Name).Where(x=>x.Count()>1)
... // select the person that has the greatest age...