Вопрос

Я пытаюсь выяснить, сколько раз максимальное значение массива встречается в массиве, используя .Count () с предикатом внутри. Однако я не совсем понимаю, как это сделать. Прочитав скудный пример MSDN, я понял, что понял, но, видимо, нет!

Это то, о чем я думал:

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

Но это не сработало. Поэтому я попытался изменить max на целое число, чтобы посмотреть, сработает ли это, но это тоже не сработало.

Это было полезно?

Решение

Вы можете использовать функцию Where, чтобы сначала отфильтровать, а затем считать:

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

Другие советы

Использование Количество (предикат) все в порядке. Вам просто нужно преобразовать возвращаемое значение (которое является целым числом) в строку.

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

Теперь у вас есть счет, который является вашим последним счетом. Имеет больше смысла с коллекцией int. Теперь, чтобы отобразить его, вы можете просто вызвать ToString () на счетчике.

Попробуйте что-то вроде:

Label1.Text = test.Where(t => t == test.Max()).Count().ToString();
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top