Select Distinct en un DataTable o DataSet

22 09 2008

(Este post es solo para programadores)

Buenas, el otro día andaba buscando como hacer un select distinct sobre un data table de .NET y resulta que con la función select del DataTable no se puede hacer un distinct para obtener las filas que son distintas dada una columna.

Estuve buscando en internet y encontré un par de soluciones pero no me servían porque devolvían los resultados en una sola columna con las filas distintas(en concreto esta de Microsoft y esta).

Así que como necesitaba algo que se pareciese más a un select distinct de SQL me hice mi propia función que es la siguiente:

C#:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
public class DataSetHelper
    {
        public static DataTable selectDisctinct(DataTable dt, string columnName)
        {
            try
            {
                if (columnName == null || columnName.Length == 0)
                       throw new ArgumentNullException(columnName, "El parámetro no puede ser nulo");
                DataTable distintos = dt.DefaultView.ToTable(true, columnName);
                DataTable aux = new DataTable();
                foreach (DataColumn dc in dt.Columns)
                    aux.Columns.Add(new DataColumn(dc.Caption,dc.DataType));
                foreach (DataRow dr in distintos.Rows)
                {
                    aux.ImportRow(dt.Select(columnName + " = '" + dr[0] + "'")[0]);
                }
                return aux;
            }
            catch (Exception ex)
            {
                throw (ex);
            }
        }
    }

es necesario incluir el namespace System.Data:
using System.Data;

Espero que sea útil.
Referencias:
http://weblogs.asp.net/eporter/archive/2005/02/10/370548.aspx
http://support.microsoft.com/default.aspx?scid=kb;en-us;326176#1

Entradas relacionadas




[Música] Nightwish - The Poet and The Pendulum

11 09 2008

Canción motivante donde las haya, se ha convertido en una de mis favoritas de este grupo finlandés (¿o se dice finés?) pese al cambio de cantante a una con una voz mucho más pop, la canción está genial, con partes suaves y partes fuertes, encuentro éstas últimas muy motivantes para programar :)

Letra:
Lea el resto »

Entradas relacionadas




Photosynth, algo más que panorámicas

10 09 2008

No se si conocéis photosynth, pero es una tecnología que han sacado los chicos de Microsoft Live Labs que aunque no es muy útil, resulta bastante espectacular.

Olvidaos de instalar photoshop para crear esos panoramas tan siesos, llega Photosynth. Esta tecnología que por fin ha salido en beta pública permite subir una colección de fotos y la aplicación se encarga de buscar partes coincidentes y de enganchar unas fotos con otras en un entorno tridimensional e interactivo. ¿Tridimensional para unas fotos planas? diréis… pues si, porque photosynth no solo es capaz de juntar las fotos sino además de adivinar desde donde ha sido tomada cada foto en relación al resto de la colección por lo que en el espacio tridimensional se respetan además las posiciones relativas de los elementos de la foto, es decir, que si subiésemos una colección de fotos de nuestra habitación, la aplicación sabría ubicar cada pared. ¿Alucinante verdad?

¿Y cómo porras funciona photosynth para hacer esto? (Explicación para torpes)

Pues usando intensivamente el procesamiento de imágenes, yo que sé un poco de esto puedo explicaros en qué consiste.

Features
Primeramente se extrae de cada imagen una serie de “características únicas” (features en inglés), mediante transformaciones de la imágen, (transformada de Fourier para la extracción de líneas y esquinas por ejemplo). Una vez se tienen un monton de “features” de cada imagen, se comparan subconjuntos de éstos entre distintas imágenes con el fin de encontrar unos patrones en ellos (patrones que se buscan teniendo en cuenta las posiciones de estas “features”). Una vez encontrados los patrones es muy sencillo encajar una imagen con otra.

Para el tema del 3d es más complicado y no lo tengo muy claro, pero parece ser que cuando encuentra los mismos patrones en varias fotos, es capaz de averiguar las distancias relativas de unos puntos a otros y desde donde se hizo la foto en base a lo que se ve en la imágen (las “features” vamos), también con matrices de transformación y esas cosas matemáticas tan chulas.

Aquí dejo un synth de las vistas de la catedral de Florencia donde estuve hace poco con Lucia.
Probablemente necesites un plugin para verlo.
Lea el resto »

Entradas relacionadas






Recomendaciones
Actividades para tus vacaciones
Buceo/Cursos de buceo  |  Excursiones naúticas  |  Piragüismo  |  Rafting  |  Surf  |  Globo aerostático  |  Heli Excursión  |  Paracaidismo  |  Parapente  |  Vuelo sin motor  |  Vuelo con motor  |  Culturales  |  Gastronomía y Enología  |  Historicas  |  Salud y Relax  |  Bicicleta montaña  |  Caballos  |  Descenso cañones  |  Escalada/Alpinismo  |  Espeleología  |  Golf  |  Paint-ball  |  Quad  |  Senderismo/Trekking  |  Todo terreno  |  Raquetas de nieve  |  Esquí alpino  |  Forfait  |  Trineo de Perros  |  Motos de Nieve  |  Snowboard