Lo que sufrimos los programadores

Febrero 05, 2009 :: Posted by - Emilio Torrens :: Category -

Lo que mas sufrimos son las estimaciones y la entrega de requerimientos, que nos los dan de aquella manera … :)

Aquí os dejo dos ejemplos, uno de Dilbert

Requerimientos Dilbert

y otro de Sinergia Sin Control

estimaciones

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();
        }