経緯
リストの重複チェックや重複排除の実装をすることが個人的によくありますが、毎回毎回実装方法を忘れてしまい、そのたびに調べたり考えたりに多少の時間を使ってしまっていました。
この辺りは既に様々な方がまとめてくださっていますが、主に自分用のメモとして重複チェックの方法や重複排除の方法をまとめました。
実装
実装は Linq の GroupBy で書いてみました。
publicstaticclassEnumerableExtension{publicstaticboolHasDuplicate<T,Tkey>(thisIEnumerable<T>source,Func<T,Tkey>keySelector)=>source.GroupBy(keySelector).Any(s=>s.Skip(1).Any());publicstaticIEnumerable<T>DistinctByKey<T,Tkey>(thisIEnumerable<T>source,Func<T,Tkey>keySelector)=>source.GroupBy(keySelector).Select(s=>s.First());}
使い方例
varcollection=newList<string>{"佐藤","佐々木","佐藤","澤田"};// 重複をチェックするvarresult1=collection.HasDuplicate(c=>c);// 重複を除去するvarresult2=collection.DistinctByKey(c=>c);