Quantcast
Channel: C#タグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 9370

C# の Linq でリストの重複チェックと重複排除を実装する

$
0
0

経緯

リストの重複チェックや重複排除の実装をすることが個人的によくありますが、毎回毎回実装方法を忘れてしまい、そのたびに調べたり考えたりに多少の時間を使ってしまっていました。

この辺りは既に様々な方がまとめてくださっていますが、主に自分用のメモとして重複チェックの方法や重複排除の方法をまとめました。

実装

実装は 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);

Viewing all articles
Browse latest Browse all 9370

Latest Images

Trending Articles