C#で配列同士の差分を確認したいときがあります。そんな時LINQPadのUtil.Difを使うと便利でというお話。
配列の差分を確認する
LINQPadはC#をサクッと書いて実行できる軽量なプレイグラウンドです。ずっと前に布教されてからずっと使っています。
さて、LINQPadを用いると配列同士の差分をグラフィカルに確認できます。 例えば次のような配列があるとします。一見すると同じそうですが、これの中でどれかの要素に差分があるのを探すのに便利です。
var a = new[] { "Alice", "Brian", "Cathy", "David", "Emily", "Frank", "Grace", "Henry", "Irene", "Julia" }; var b = new string[] { "Cathy", "David", "Brian", "Henry", "Alice", "Emi1y", "Grace", "Frank", "lrene", "JuIia" };
差分確認はUtil.Difを使います。差分をとる配列は順序をそろえておく必要があるので次のように書いてみましょう。
Util.Dif(a.OrderBy(x => x), b.OrderBy(x => x)).Dump();
差分は次のように表示されます。便利ですね。
まとめ
Util.DifはLINQPadの便利な機能の1つです。例えば、雑にEmailが書かれたスプレッドシートとマスタ的なもので件数に差分がある時に使えます。50件とか100件あると目で探すのもスプレッドシートで並べるのも面倒ですよね。 雑に使えるLINQPadのユーティリティ関数、ほかにもあるのですが全然使いこなせてないのでまた機会があれば紹介します。