LINQ を使って差集合を取得する
Microsoft Visual Studio プログラムマネージャの Noah Coad 氏のブログ で 面白い投稿 を見つけた。 差集合取得操作をしたいと思うことが時々あるでしょう。つまり、集合 A の要素の中で集合 B に存在しないものだけを取得するという操作です。集合 A と B の型が同じであれば LINQ の Except メソッドでこれを実現できるのですが、集合の型が異なり、かつ ID をマッチさせなければならないということがよくあります。ここでは LINQ を使ってどうやってこれを実現するかという簡単な例をご紹介します。 Wolfram MathWorld によれば操作はこのように定義されます: private static void Main( string [] args) { List< string > names = new List< string > { "Noah" , "Sarah" , "Josiah" , "Craig" , "Carolin" }; Dictionary< string , string > visiting = new Dictionary< string , string >() { { "Noah" , "Turkey" }, { "Craig" , "Germany" }, { "Sue" , "Bangalore" } }; var minus = from n in names let places = from p in visiting select p.Key where !places.Contains(n) select n; foreach ( var v in minus) { Console.WriteLine(v); } Conso...