Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/288.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将C#Count()与函数一起使用_C#_Linq_Max_Predicate - Fatal编程技术网

将C#Count()与函数一起使用

将C#Count()与函数一起使用,c#,linq,max,predicate,C#,Linq,Max,Predicate,我试图通过使用带有谓词的Linq来计算数组的最大值在数组中出现的次数。然而,我并不完全明白如何去做。通过阅读MSDN的一个不多的例子,我想我明白了,但显然不是 这就是我的想法: string[] test = { "1", "2", "3", "4", "4" }; string max = test.Max(); Label1.Text = test.Count(p => p == max); 但这并不奏效。因此,我尝试将max更改为一个整数,以查看这是否可行,但也不起作用。您可以使用

我试图通过使用带有谓词的Linq来计算数组的最大值在数组中出现的次数。然而,我并不完全明白如何去做。通过阅读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.Where(t => t == test.Max()).Count().ToString();
使用是可以的。您只需要将返回值(一个整数)转换为字符串

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

现在你有了最后的计数。使用int集合更有意义。现在要显示它,您只需在计数时调用ToString()。

您不需要先使用
Where
进行筛选
Count
有一个重载,它使用一个
Func
谓词,只对匹配的项进行计数。@Mehrdad:不知道,将使用您的答案然后
列出。Count(item=>item.Value==“something”)
将是一个更好、更简单的方法。您所说的“不起作用”是什么意思?它的作用是什么?它与您期望的有什么不同?您是否收到任何错误消息?
        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());