LINQ to Objects, filtrando por tipo de Objeto

febrero 03, 2009 :: Posted by - Emilio Torrens :: Category -

El otro día estaba trabajando con unas clases que eran contenedoras de varios tipos de clases, en un array de Objetos, vi que estábamos accediendo al objeto por posición y luego haciéndole cast, suponiendo que ese tipo de objeto siempre estaría en esa posición, pero cuando se producían errores todos los objetos se movían hacia abajo al insertar un objeto Error.

¿Para que suelto este rollo? pues porque me puse a probar LINQ para buscar en colecciones por tipo de objeto y, desde luego, es la manera mas elegante, cada día estoy mas enamorado de LINQ.

Aquí os dejo un código de ejemplo:

 public static void Test()
        {
            List<object> Lista = new List<object>();

            Lista.Add(1);
            Lista.Add(2);
            Lista.Add(3);
            Lista.Add(4);

            Lista.Add("a");
            Lista.Add("b");
            Lista.Add("c");
            Lista.Add("d");

            Lista.Add(DateTime.Today);
            Lista.Add(DateTime.Today.AddDays(1));
            Lista.Add(DateTime.Today.AddDays(2));
            Lista.Add(DateTime.Today.AddDays(3));

            var IntList =  from i in Lista where i.GetType() == typeof (int) select i;

            var StringList = from s in Lista where s.GetType() == typeof(string) select s;

            var DateTimeList =
                from d in Lista where d.GetType() == typeof(DateTime) select d;

            Console.WriteLine("Hay {0} Integers",IntList.Count());
            Console.WriteLine("Hay {0} Strings", StringList.Count());
            Console.WriteLine("Hay {0} DateTimes", DateTimeList.Count());

            Console.ReadLine();
        }

Si te gusta compartelo ...
  • Digg
  • Sphinn
  • del.icio.us
  • Facebook
  • Mixx
  • Google Bookmarks
  • DotNetKicks
  • Live
  • MySpace
  • Meneame
  • Twitter

Tags:

Leave a Reply