6

我是 C# 新手,希望能在这个话题上得到一些帮助。我有一个包含元素的数组,我需要显示每个项目出现的次数。

例如,在 中[1, 2, 3, 4, 4, 4, 3]1出现 1 次,4出现 3 次,以此类推。

我已经完成了以下操作,但不知道如何将其放入 foreach/if 语句中...

int[] List = new int[]{1,2,3,4,5,4,4,3};
foreach(int d in List)
{
    if("here I want to check for the elements")
}

谢谢你,对不起,如果这是一个非常基本的......

4

5 回答 5

12

您可以通过Enumerable.GroupBy处理此问题。我建议查看有关 Count 和 GroupBy 的C# LINQ 示例部分以获取指导。

在您的情况下,这可以是:

int[] values = new []{1,2,3,4,5,4,4,3};

var groups = values.GroupBy(v => v);
foreach(var group in groups)
    Console.WriteLine("Value {0} has {1} items", group.Key, group.Count());
于 2012-08-07T17:21:00.947 回答
7

您可以保留Dictionary找到的项目及其相关计数。在下面的示例中,dict[d]通过其值引用元素。例如d = 4.

int[] List = new int[]{1,2,3,4,5,4,4,3};
var dict = new Dictionary<int, int>();
foreach(int d in List)
{
    if (dict.ContainsKey(d))
        dict[d]++;
    else
        dict.Add(d, 1);
}

foreach循环终止时,您将在dict. 您可以通过访问获取每个项目的计数dict[d],其中d是原始列表中的某个整数值。

于 2012-08-07T17:21:29.067 回答
3

LINQ 的答案很好,但如果你想自己做:

int[] numberFound = new int[6];
int[] List = new int[] { 1, 2, 3, 4, 5, 4, 4, 3 };
foreach (int d in List)
{
    numberFound[d]++;
}
于 2012-08-07T17:36:23.340 回答
1
var list = new int[] { 1, 2, 3, 4, 5, 4, 4, 3 };
var groups = list.GroupBy(i => i).Select(i => new { Number = i.Key, Count = i.Count() });
于 2012-08-07T17:23:31.637 回答
-1

私有静态无效CalculateNumberOfOccurenceSingleLoop()

{

        int[] intergernumberArrays = { 1, 2, 3, 4, 1, 2, 4, 1, 2, 3, 5, 6, 1, 2, 1, 1, 2 };

        Dictionary<int, int> NumberOccurence = new Dictionary<int, int>();
        for (int i = 0; i < intergernumberArrays.Length; i++)
        {
            if (NumberOccurence.ContainsKey(intergernumberArrays[i]))
            {
                var KeyValue = NumberOccurence.Where(j => j.Key == intergernumberArrays[i]).FirstOrDefault().Value;
                NumberOccurence[intergernumberArrays[i]] = KeyValue + 1;
            }
            else
            {
                NumberOccurence.Add(intergernumberArrays[i], 1);
            }
        }
        foreach (KeyValuePair<int, int> item in NumberOccurence)
        {
            Console.WriteLine(item.Key + " " + item.Value);
        }
        Console.ReadLine();

    }
于 2017-05-02T05:07:47.390 回答