BEACHSIDE BLOG

Azure と GitHub と C# が好きなエンジニアの個人メモ ( ・ㅂ・)و ̑̑

【C#】 コレクションの重複をチェックする

これまたちょっとしたTipsです。
文字列のコレクションを重複チェックする際、
for とか foreach とか if とか使ってるコードを見て震えたので、書いておこうと思いました。

f:id:beachside:20160610204943j:plain

別にループや分岐を使うことは悪くないですが、サイクロマティック複雑度とか地味に気にするので使いたくない派な私です。
ただ、デカいコレクションに対してパフォーマンスを気にしながら操作をする場合は、そこ考えながら使うべきなので、「ご利用は計画的に」と思っております。

今回は、LinqでGroupByして重複あるかチェックしてまえー作戦でコードを書きました。

前回同様、拡張メソッドで作ってます。
具体的な動作って?と思った場合は、デバッグしてみると、「あ、そゆことね」となります(たぶん...)
使うときはこんな感じですね。

var items1 = new[] { "a", "b", "c" };
var items2 = new[] { "a", "b", "a" };

var result1 = items1.ContainsDuplicate();  // false
var result2 = items2.ContainsDuplicate();  // true

これを応用して、重複したものは取るとかもできますね。

という小ネタでした。
最近、bot frameworkをやる空気が流れているので、今後はその辺りも書きたいなーとか思ってます。