Lista de matrices duplicadas con recuento

Tengo una matriz que contiene los siguientes resultados

red red red blue blue Green White Grey 

y quiero obtener un conteo duplicado de cada valor de matriz, por ejemplo:

 red Count=3 blue Count=2 Green Count=1 White Count=1 Grey Count=1 

LINQ lo hace fácil:

 Dictionary counts = array.GroupBy(x => x) .ToDictionary(g => g.Key, g => g.Count()); 

Agréguelos a un diccionario:

 Dictionary counts = new Dictionary(); foreach(string s in list) { int prevCount; if (!counts.TryGet(s, out prevCount)) { prevCount.Add(s, 1); } else { counts[s] = prevCount++; } } 

A continuación, count contiene las cadenas como claves y su aparición como valores.

Hmm. Es una tarea muy difícil, ¡pero Captain Algorithm te ayudará! Él nos dice que hay muchas maneras de hacer esto. Uno de ellos me los dio y yo te los di:

 Dictionary  tmp = new Dictionary  (); foreach (Object obj in YourArray) if (!tmp.ContainsKey(obj)) tmp.Add (obj, 1); else tmp[obj] ++; tmp.Values;//Contains counts of elements 

un pequeño error arriba, el código correcto es:

 string[] arr = { "red", "red", "blue", "green", "Black", "blue", "red" }; var results = from str in arr let c = arr.Count( m => str.Contains(m.Trim())) select str + " count=" + c; foreach(string str in results.Distinct()) Console.WriteLine(str); 

hacer otra serie de recuentos … y hacer un bucle en la matriz original, poniendo la condición de que si encuentra rojo, incremente la primera celda de la matriz de conteos … si encuentra azul, incremente la segunda celda en la matriz de conteos …. etc. Buena suerte .

 Hashtable ht = new Hashtable(); foreach (string s in inputStringArray) { if (!ht.Contains(s)) { ht.Add(s, 1); } else { ht[s] = (int)ht[s] + 1; } } 

Creo que esto debería hacer el truco

  string[] arr = { "red", "red", "blue", "green", "Black", "blue", "red" }; var results = from str in arr let c = arr.Count( m => str.Contains(m.Trim())) select str + " count=" + str; foreach(string str in results.Distinct()) Console.WriteLine(str); 

Salida:

 red count=3 blue count=2 green count=1 Black count=1