これまたちょっとしたTipsです。
文字列のコレクションを重複チェックする際、
for とか foreach とか if とか使ってるコードを見て震えたので、書いておこうと思いました。
別にループや分岐を使うことは悪くないですが、サイクロマティック複雑度とか地味に気にするので使いたくない派な私です。
ただ、デカいコレクションに対してパフォーマンスを気にしながら操作をする場合は、そこ考えながら使うべきなので、「ご利用は計画的に」と思っております。
今回は、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をやる空気が流れているので、今後はその辺りも書きたいなーとか思ってます。