Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/275.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.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# 如何显示数组元素出现的次数_C#_Arrays - Fatal编程技术网

C# 如何显示数组元素出现的次数

C# 如何显示数组元素出现的次数,c#,arrays,C#,Arrays,我是C#的新手,希望能在这个话题上得到一些帮助。我有一个包含元素的数组,我需要显示每个项目出现的次数 例如,在[1,2,3,4,4,4,3]中,1出现一次,4出现三次,依此类推 我已经做了以下操作,但不知道如何将其放在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") } 谢谢你,如果这是一个

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

例如,在
[1,2,3,4,4,4,3]
中,
1
出现一次,
4
出现三次,依此类推

我已经做了以下操作,但不知道如何将其放在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")
}
谢谢你,如果这是一个非常基本的问题,很抱歉…

你可以通过。我建议查看有关计数和分组的部分以获得指导

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

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());

您可以保留找到的项目及其相关计数的
字典。在下面的示例中,
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);
}
int[]List=newint[]{1,2,3,4,5,4,4,3};
var dict=新字典();
foreach(列表中的int d)
{
if(dict.ContainsKey(d))
dict[d]++;
其他的
新增(d,1);
}

foreach
循环终止时,
dict
中的每个唯一值都有一个条目。您可以通过访问
dict[d]
来获得每个项目的计数,其中
d
是原始列表中的某个整数值。

LINQ答案很好,但如果您自己尝试这样做:

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() });
int[] numberFound = new int[6];
int[] List = new int[] { 1, 2, 3, 4, 5, 4, 4, 3 };
foreach (int d in List)
{
    numberFound[d]++;
}

私有静态void calculateEnumberOfOccurenceSingleLoop()

{

int[]整数数组={1,2,3,4,1,2,4,1,2,3,5,6,1,2,1,1,1,2};
字典编号curence=新字典();
对于(int i=0;ij.Key==intergernumberArrays[i]).FirstOrDefault().Value;
NumberCurence[intergernumberArrays[i]]=KeyValue+1;
}
其他的
{
numberrocurence.Add(intergernumberArrays[i],1);
}
}
foreach(NumberCurence中的KeyValuePair项)
{
Console.WriteLine(item.Key+“”+item.Value);
}
Console.ReadLine();
}

如果这是作业,请将其标记为作业。不,也不是,我只是在学习并尝试这样做:-)尝试使用
字典,其中每个键代表一个唯一的条目,值代表一个计数。每次点击现有键时,将其值增加1。可能重复为什么为numberFound分配6个空格,但实际上只有5个?@john,这样numberFound[x]将对应于x,而不是x-1。(NumberFind的范围从0到5。)这与4.5年前的概念相同,只是解决方案只访问每个数组元素一次,并且每次遇到新值时,该解决方案都会遍历数组的其余部分。另外,检索类型为
int
的数组元素,将其格式化为
字符串,然后将其解析回
int
的目的是什么?为什么不直接使用
intergernumberarray[i]
而不是
int.Parse(intergernumberarray[i].ToString())
        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();

    }