tus camisetas frikis en camisetafriki.com
Home > Programacion > Select Distinct en un DataTable o DataSet

Select Distinct en un DataTable o DataSet

September 22nd, 2008 Leave a comment Go to comments

(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

Post relacionados

  • No hay post relacionados
Categories: Programacion Tags:
  • desconecto
    Gracias viejo ... me ahorraste N tiempo, vi un ejemplo de microsoft pero este es mas eficiente

    Saludos!
  • Eliab Lemus
    Probando, Muchas gracias por publicar el codigo.
  • Halber
    Excelente justo lo que buscaba!
  • Alexander
    Perfecto, yo tb lo recomiendo,

    como seria con menos codigo para el Framework 3.5??
  • juan lozada
    Genial tu aporte...no le tenia mucha fe pero esta perfecto lo recomiendo
  • Enrique
    Muy buen aporte para Framework 2.0 ya en 3.5 podemos hacerlo con menos codigo

    Saludos
  • Jorge
    Muy bueno, justo lo que estaba buscando para no realizar un doble Query.
    Saludos!!
blog comments powered by Disqus