如果我有 int [] number = {1,1,2,2,3,4},我想找到出现最多的数字,但在这种情况下,出现最多的数字是 2(1 和 2) ,如果发生这种情况,那么我想做一个符号,如果在这个数组中出现的最大数字数是 > 1,代码:
int count = 1, tempCount;
int frequentNumber = number[0];
int tempNumber = 0;
for (int i = 0; i < (number.Length - 1); i++)
{
tempNumber = number[i];
tempCount = 0;
for (int j = 0; j < number.Length ; j++)
{
if (tempNumber == number[j])
{
tempCount++;
}
}
if (tempCount > count)
{
frequentNumber = tempNumber;
count = tempCount;
}
}
Run Code Online (Sandbox Code Playgroud)
这可以用LINQ惯用地完成。
int[] number = {1, 1, 2, 2, 3, 4};
var result = number
.GroupBy(x => x) // group your numbers
.Select(x => new {x.Key, Count = x.Count()}) // project
.GroupBy(x => x.Count) // group the count
.OrderByDescending(x => x.Key) // order by count
.FirstOrDefault(); // pick the highest group
foreach (var item in result)
Console.WriteLine(item);
Run Code Online (Sandbox Code Playgroud)
输出
{ Key = 1, Count = 2 }
{ Key = 2, Count = 2 }
Run Code Online (Sandbox Code Playgroud)
其他资源
对序列的元素进行分组。
将序列的每个元素投影到新形式中。
Enumerable.OrderByDescending 方法
按降序对序列的元素进行排序。
返回序列的第一个元素,如果未找到元素,则返回默认值。
匿名类型提供了一种方便的方法,可以将一组只读属性封装到单个对象中,而无需先显式定义类型。类型名称由编译器生成,在源代码级别不可用。每个属性的类型由编译器推断。
语言集成查询 (LINQ) 是一组基于将查询功能直接集成到 C# 语言中的技术的名称。传统上,对数据的查询表示为简单的字符串,在编译时没有类型检查或 IntelliSense 支持。此外,您必须为每种类型的数据源学习不同的查询语言:SQL 数据库、XML 文档、各种 Web 服务等等。对于 LINQ,查询是一流的语言构造,就像类、方法、事件一样。您可以使用语言关键字和熟悉的运算符针对强类型对象集合编写查询。
| 归档时间: |
|
| 查看次数: |
72 次 |
| 最近记录: |