Lo nuevo de C Sharp (Parte 2)

Sigo “jugando” con algunas características del nuevo CSharp, que puedo probar desde el Beta 2 de Visual Studio 2008. En el anterior post Lo nuevo de C Sharp (Parte 1) había escrito sobre Extension Methods. Sigamos en este ejemplo, explorando alguna de las posibilidades.

El ejemplo de este “post” pueden bajarlo desde CSharpNew2.zip

Encontraran que el ejemplo de consola, tiene al comienzo:

1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5

Esto no tuve que escribirlo, sino que el Visual Studio ya lo coloca al comienzo de la clase. LINQ es como que ya viene.

Recordemos que los Extension Methods se escriben dentro de clases estáticas.

En la clase estática Extensions, hay dos métodos  

 

1 static class Extensions 2 { 3 public static List<T> Append<T>(this List<T> list1, List<T> list2) 4 { 5 List<T> result = new List<T>(list1); 6 result.AddRange(list2); 7 8 return result; 9 } 10 11 public static void Show(this IEnumerable<Supplier> suppliers) 12 { 13 foreach (Supplier supplier in suppliers) 14 Console.WriteLine("Supplier {0} {1} ({2})", supplier.SupplierId, supplier.Name, supplier.City); 15 } 16 }

El método Append recibe dos listas tipada con Generics, que manejen elementos del tipo T, y devuelve una lista con la suma de las dos listas. Vemos el uso de this para indicar que el primer parámetros es en realidad, el objeto al que se le va a permitir usar el nuevo método Append.

El método Show se podrá aplicar a cualquier IEnumerable de elementos Supplier.

En la prueba, en el método Main:

 

1 class Program 2 { 3 static void Main(string[] args) 4 { 5 List<Supplier> suppliers = 6 new List<Supplier> { 7 new Supplier(1) { Name = "John Madison", City = "Washington" }, 8 new Supplier(2) { Name = "Ann Arbor", City = "Ohio" }, 9 new Supplier(3) { Name = "Don Johnson", City = "Miami" }, 10 new Supplier(4) { Name = "Bill Clinton", City = "Washington" } 11 }; 12 13 List<Supplier> suppliers2 = 14 new List<Supplier> { 15 new Supplier(5) { Name = "John Smith", City = "New Jersey" }, 16 new Supplier(6) { Name = "Mary Dupinsky", City = "Los Angeles" }, 17 new Supplier(7) { Name = "Ronald Reagan", City = "Washington" }, 18 new Supplier(8) { Name = "Brad Shapiro", City = "Dallas" } 19 }; 20 21 var suppliersall = suppliers.Append(suppliers2); 22 23 Console.WriteLine("All Suppliers"); 24 suppliersall.Show(); 25 26 var suppliers3 = suppliersall.FindAll(s => s.City == "Washington"); 27 28 Console.WriteLine(); 29 Console.WriteLine("Suppliers In Washington"); 30 31 suppliers3.Show(); 32 33 var suppliers4 = from s in suppliers 34 where s.City == "Washington" 35 select s; 36 37 Console.WriteLine(); 38 Console.WriteLine("Suppliers In Washington"); 39 40 suppliers4.Show(); 41 } 42 } 43

En la línea 21 usamos el Append sobre un List<Supplier>. En la línea 25, vemos que supplierall tiene disponible el método Show.


El método FindAll permite la especificación de un predicado anónimo s => s.City == “Washington”, una función que recibe un parámetro s y devuelve un boolean, verdadero o falso, según tenga o no el proveedor sede en Washington.


En la línea 33, se usa una consulta LINQ integrada con el lenguaje, que produce el mismo resultado que el FindAll. Vemos que el from viene primero, y el select es la última sentencia: esto permite que el entorno sepa con el from, qué tipo está disponible para usar en la expresión que sigue al select. Así, al escribir el select, tenemos determinados el tipo de los elementos a seleccionar, y la IDE nos dá “intellisense” sobre el tipo supplier.


Nos leemos!


Angel “Java” Lopez
http://www.ajlopez.com/

This entry was posted in 1389, 5374. Bookmark the permalink.

3 Responses to Lo nuevo de C Sharp (Parte 2)

  1. Manuel says:

    Ahora entiendo por que al agregar “using System.Linq;” aparecen tantos métodos mágicos en Generic.List y compañía.
    Gracias!

  2. Jonathan says:

    podrias decirme como puedo mandar tres parametros a un procedimiento alamcenado usando tres combobox en c sharp??

  3. Jonathan says:

    podrias decirme como puedo mandar tres parametros a un procedimiento alamcenado usando tres combobox en c sharp??

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>