Foros del Web » Programación para mayores de 30 ;) » .NET »

Buscar y contar elementos repetidos en un list

Estas en el tema de Buscar y contar elementos repetidos en un list en el foro de .NET en Foros del Web. Que tal compañeros, vengo a ustedes solicitando su apreciable ayuda, verán, relleno una lista genérica (list<tipo>) con un string: @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código C#: Ver original ...
  #1 (permalink)  
Antiguo 23/09/2012, 18:38
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 20 años, 7 meses
Puntos: 406
Buscar y contar elementos repetidos en un list

Que tal compañeros, vengo a ustedes solicitando su apreciable ayuda, verán, relleno una lista genérica (list<tipo>) con un string:

Código C#:
Ver original
  1. List<string> colores = new List<string>("rojo","azul","amarillo","rojo","morado","rojo");

Como verán, el color rojo se repite 3 veces, lo que busco es saber cuantas veces se repite cada color:

rojo: 3
amarillo: 1
azul: 1
morado: 1

Pero no logro hacerlo, eh estado viendo como hacerlo con linq, pero no le entiendo, con SQL es muy fácil...

Código SQL:
Ver original
  1. SELECT color, COUNT(*) AS total FROM colores GROUP BY color

Pero no me es posible pasarlo a linq...

Agradezco toda ayuda o comentario que me dejen...
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)
  #2 (permalink)  
Antiguo 23/09/2012, 19:50
 
Fecha de Ingreso: marzo-2011
Mensajes: 342
Antigüedad: 13 años, 7 meses
Puntos: 97
Respuesta: Buscar y contar elementos repetidos en un list

Tal vez una solución sea foreach anidado, la primera vez que lo recorres, guardás el primer valor en una variable, la segunda vez que lo recorres comparás ese string con los que están dentro de tu lista, por cada coincidencia le haces un contador que sume. Dicha variable que ya guardaste no la desechás, debe ser usada para que cuando quiera volver a usar un color por el cual ya se preguntó, no deje hacerlo (mediante un if), saludos .
  #3 (permalink)  
Antiguo 24/09/2012, 11:32
Avatar de cristiantorres  
Fecha de Ingreso: marzo-2012
Mensajes: 383
Antigüedad: 12 años, 8 meses
Puntos: 61
Respuesta: Buscar y contar elementos repetidos en un list

Lo podes hacer con linq utilizando el operador group by.

Pero vas a necesitar crearte una lista de tipo clase.
Tengo un articulo donde explico como usar el group byAgrupar Datos Linq (GroupBy) C# - VB.Net

En tu caso también tendrias que usar el operador count algo así.
Código c#:
Ver original
  1. public class Color
  2. {
  3.    public string Color{ get; set; }
  4.    public Persona(string col)
  5.    {
  6.        Color = col;
  7.    }
  8. }
  9.  
  10. List<Color> colores = new List<Color>
  11. {
  12.    new Color("Rojo"),
  13.    new Color("Rojo"),
  14.    new Color("Amarillo"),
  15.    new Color("Amarillo")
  16.  
  17. };

Ahi tendrias algunos registros ahora aplicas linq.
Código c#:
Ver original
  1. var query = colores.GroupBy(c => c.Color,
  2.             (numcolor) => new
  3.             {
  4.                     Color = numcolor.Count()
  5.             });

Como veras primero agrupas los datos con groupby y luego usas count para contarlos, no he probado el código lo he puesto sin probarlo pero creo que te tendría que funcionar.
__________________
Visita mi Blog C#, vb.net, asp.net, sql, java y mas...
Blog Cristian Torres

Etiquetas: elementos, list, repetidos, sql
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 10:30.