Pergunta

Eu estou tentando descobrir quantas vezes o valor máximo de uma matriz ocorre dentro da matriz, usando .Count() com um predicado dentro. No entanto, eu não entender completamente como fazê-lo. Da leitura escassa exemplo do MSDN eu pensei que eu entendi, mas aparentemente não!

Este é o que eu pensei:

string[] test = { "1", "2", "3", "4", "4" };
string max = test.Max();
Label1.Text = test.Count(p => p == max);

Mas isso não funcionou. Então, eu tentei mudar max para um inteiro para ver se isso iria funcionar, mas que não quer trabalhar.

Foi útil?

Solução

Você pode usar o Onde função para filtrar primeiro e depois contar:

Label1.Text = test.Where(p => p == max).Count().ToString();

Outras dicas

Usando Count(predicate) é OK. Você só precisa converter o valor de retorno (que é um inteiro) para string.

Label1.Text = test.Count(p => p == max).ToString();
        int[] test = { 2, 45, 3, 23, 23, 4, 2, 1, 1, 1, 1, 23, 45, 45, 45 };
        int count = test.Count(i => i == test.Max());

Agora você tem a contagem que é sua contagem final. Faz mais sentido com uma coleção int. Agora, para exibi-lo, você pode apenas chamar ToString () na contagem.

Tente algo como:

Label1.Text = test.Where(t => t == test.Max()).Count().ToString();
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top