在c#中声明像php array_count_values这样的函数的方法是什么?

Hai*_*vgi 0 c# arrays count

我想在 c# 中声明接受一个数组的函数并返回该数组的所有值的计数

就像php 中的array_count_values

$array = array(1, 1, 2, 3, 3, 5 );

return 

Array
(
    [1] => 2
    [2] => 1
    [3] => 2
    [5] => 1
)
Run Code Online (Sandbox Code Playgroud)

这样做的有效方法是什么?

谢谢

jas*_*son 5

int[] array = new[] { 1, 1, 2, 3, 3, 5 };
var counts = array.GroupBy(x => x)
                  .Select(g => new { Value = g.Key, Count = g.Count() });
foreach(var count in counts) {
    Console.WriteLine("[{0}] => {1}", count.Value, count.Count);
}
Run Code Online (Sandbox Code Playgroud)

或者,你可以得到一个Dictionary<int, int>像这样的:

int[] array = new[] { 1, 1, 2, 3, 3, 5 };
var counts = array.GroupBy(x => x)
                  .ToDictionary(g => g.Key, g => g.Count());
Run Code Online (Sandbox Code Playgroud)