Listar duplicatas da matriz com contagem

Eu tenho uma matriz que contém os seguintes resultados

red red red blue blue Green White Grey 

e eu quero obter contagem duplicada de cada valor de array, por exemplo:

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

O LINQ facilita isso:

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

Adicione-os a um dictionary:

 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++; } } 

Em seguida, contagens contém as seqüências de caracteres como chaves e sua ocorrência como valores.

Hmm Essa é uma tarefa muito difícil, mas o Captain Algorithm irá ajudá-lo! Ele está nos dizendo que há muitas maneiras de fazer isso. Um deles ele me dá e eu dou para você:

 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 

um pequeno erro acima, o código correto é:

 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); 

faça outra matriz de contagens …. e faça um loop no array original colocando uma condição que se encontrasse em vermelho incremente a 1ª célula da matriz de contagem … se encontrasse azul incrementasse a segunda célula na matriz de contagem …. etc. Boa sorte .

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

Eu acho que isso deve fazer o truque

  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); 

Saída:

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