読者です 読者をやめる 読者になる 読者になる

かわろぐ

技術、ボルダリング、セキュリティ、その他もろもろ

MENU

C#でカンマ区切りの文字列と配列とで差集合を取る

int の配列に対して、カンマ区切りの文字列の中にある数字を除いた差集合を取る方法です。 とっても簡単なことですが、意外とスパっとかけたのでメモ。

書いたコードが以下のとおり。

var a = new int[5] {1,2,3,4,5};
var str = "2,3";
var b = str.Split(',').Select(x => Int32.Parse(x));

a.Except(b).Dump();

3行目は、Split() でカンマで文字列を分割し、その各要素を int に変換して返しています。

5行目の、Except(IEnumerable) は拡張メソッドで、引数の IEnumerable に含まれない要素を返してくれます。

実行結果は以下のとおり。 f:id:kawa_xxx:20160217224119j:plain

軽くハマったところは Select の中の x を int に変換し忘れて型が違うって言われたところ。

Linq便利ー!LINQPad便利ー!