Использование C # Count () с функцией - PullRequest
6 голосов
/ 18 сентября 2009

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

Вот о чем я думал:

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

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

Ответы [ 4 ]

16 голосов
/ 18 сентября 2009

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

Label1.Text = test.Count(p => p == max).ToString();
7 голосов
/ 18 сентября 2009

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

Label1.Text = test.Where(p => p == max).Count().ToString();
2 голосов
/ 18 сентября 2009
        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 () на счетчике.

0 голосов
/ 18 сентября 2009

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

Label1.Text = test.Where(t => t == test.Max()).Count().ToString();
...