我已经创建了一个方法,可以在数组中查找一个最常用的数字以及重复多少次。但是,我的任务是找到少量数字,如果它们重复相同的次数。我应该创建另一种方法还是如何找到解决方案?
public static void most(Ring[] rings, int numCounter, out int popHallmark, out int amount)
{
amount = 1;
popHallmark = 0;
for (int i = 0; i < numCounter; i++)
{
int count = 0;
int temp = rings[i].HallMark;
count++;
for (int k = 0; k < numCounter; k++)
{
if (i != k)
{
if (k > i)
{
if (temp == rings[k].HallMark)
{
count++;
if (count > amount)
{
popHallmark = temp; // most popular hallmark
amount = count; //amount of rings that has this hallmark
}
}
}
}
}
}
}
答案 0 :(得分:3)
您可以使用GroupBy()
linq方法。
假设你有一个int数组,你可以这样做:
var groupedNumbers = yourArray.GroupBy(x=>x)
这意味着每个组都包含相同的数字。
接下来,您需要在每个组上调用Count()
方法以获取组包含的元素数量。
var numberCount = groupedNumberes.Select(x=>new{
number = x.Key,
numberOfOccurrences = x.Count
})
numberCount将包含一组匿名对象,其中包含数字和重复次数。 希望这对你有所帮助。
修改强>
您可以订购numberCount
并获得&#34; FEW&#34;你需要的数字:
numberCount.OrderByDescending(x=>x.numberOfOccurrences).Take(howManyNumbersYouNeed).Select(x=>x.number)