Seasons.NET

ちょっとした技術ブログです

Rubyのdelete_ifみたいに

データがArrayの時に不要なデータ消したいなぁ〜なんて思ったら、
rubyのreject!とかdelete_ifとかmapとかの感覚でやりたいものです。
そんなときは、Listにコレクションを渡して変換した後、
delegate使って、比較する無名関数を作り、フィルタしてやればいいです。

 1 using System;
 2 using System.Collections.Generic;
 3 
 4 namespace PatternResearch01
 5 {
 6     class Program
 7     {
 8         static void Main(string args)
 9         {
10             int values = new int[]{0,1,2,3,4,5};
11 
12             // Transform array -> list
13             List<int> lvalues = new List<int>(values);
14             // Remove optional value such as delete_if( by Ruby )
15             lvalues.RemoveAll(new Predicate<int>(delegate(int v) { return v == 0; }));
16             // Show Elements of List
17             foreach (int i in lvalues)
18                 Console.WriteLine("value = {0}", i);
19         }
20     }
21 }