我想聲明在接受數組中的 回報計數在PHP在c#中聲明像php array_count_values這樣的函數的方法是什麼?
$array = array(1, 1, 2, 3, 3, 5);
return
Array
(
[1] => 2
[2] => 1
[3] => 2
[5] => 1
)
什麼是有效的方式來做到這一點,這陣
像array_count_values的所有值C#功能?
感謝
我想聲明在接受數組中的 回報計數在PHP在c#中聲明像php array_count_values這樣的函數的方法是什麼?
$array = array(1, 1, 2, 3, 3, 5);
return
Array
(
[1] => 2
[2] => 1
[3] => 2
[5] => 1
)
什麼是有效的方式來做到這一點,這陣
像array_count_values的所有值C#功能?
感謝
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);
}
或者,你可以得到一個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());
編輯
對不起,我現在看到我以前的答案是不正確的。你想要計算每種類型的唯一值。
您可以使用字典來存儲值類型:
object[] myArray = { 1, 1, 2, 3, 3, 5 };
Dictionary<object, int> valueCount = new Dictionary<object, int>();
foreach (object obj in myArray)
{
if (valueCount.ContainsKey(obj))
valueCount[obj]++;
else
valueCount[obj] = 1;
}
如果你希望能夠算除了ints之外,還有其他的東西試試這個
public static Dictionary<dynamic, int> Count(dynamic[] array)
{
Dictionary<dynamic, int> counts = new Dictionary<dynamic, int>();
foreach(var item in array) {
if (!counts.ContainsKey(item)) {
counts.Add(item, 1);
} else {
counts[item]++;
}
}
return counts;
}
這不是一個單一功能的答案 - 不存在 - 但它比我準備的循環更好。 +1 – Randolpho 2010-11-18 19:54:37
謝謝,我怎麼能在這個數組結果中找到最大count.count? – 2010-11-18 20:06:33
var maxValue = counts.Max(g => g.Value); – mellamokb 2010-11-19 14:28:52