Acerca de:

Este blog contiene los códigos, ejemplos y bases de datos que he usado cuando aprendía acerca de algún tema específico. En lugar de borrarlos (una vez dominado ya el tema), he decidido publicarlos :)

martes, 14 de octubre de 2014

Test Fizz Buzz en Python recursivo


Ejecutado y compilado con este compilador online.

def FZ(i):
  if i==0:
    return 0
  else:
    if i%3 == 0 or i%5 == 0:
      if i%3 == 0 and i%5 == 0:
        print "Fizz Buzz"
      else:
        if i%3 == 0:
          print "Fizz"
        if i%5 == 0:
          print "Buzz"
    else:
      print i
  
    return FZ(i-1) 
 
FZ(100)

miércoles, 1 de octubre de 2014

Modificar los datos de un DataTable con Linq en C#

Este post existe gracias a la ayuda de StackOverflow :D

Tengo un DataTable, el cual tiene una columna llamada "Campo1" con datos tipo texto. Quiero que todos los datos que coincidan con un valor sean cambiados por la cadena "Datos por Defecto".
En lugar de usar un bucle, se puede hacer con Linq:

DataTable d = MetodoQueDevuelveUnDataTable();
d.AsEnumerable().ToList<DataRow>().ForEach
   ( r =>
             {
                     if(String.Compare(r["Campo1"].ToString(), "valor que quiero cambiar") == 0)
                          r["Campo1"] = "Datos Por Defecto";
             }
   );

Lo que hace el ForEach es recorrer todas las filas y buscar aquellas donde se cumple la condición y realizar las acciones que deseemos:

DataTable d = MetodoQueDevuelveUnDataTable();
d.AsEnumerable().ToList<DataRow>().ForEach
  ( r =>
             {
                      if(String.Compare(r["Campo1"].ToString(), "valor que quiero cambiar") == 0)
                      {
                           r["Campo1"] = "Datos Por Defecto";
                           r["Campo2"] = Otro Valor;
                       }
             }
  );

Si se desea modificar un valor de uno o más campos determinados en todas las filas, sólo se quita la condición:
 
DataTable d = MetodoQueDevuelveUnDataTable();
d.AsEnumerable().ToList<DataRow>().ForEach
  ( r =>
             {
                 r["Campo1"] = "Datos Por Defecto";
                 r["Campo2"] = Otro Valor;
             }
  );