c# - 如何检查最大数量是否大于1
问题描述
如果我有 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;
}
}
解决方案
这可以用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);
输出
{ Key = 1, Count = 2 }
{ Key = 2, Count = 2 }
其他资源
对序列的元素进行分组。
将序列的每个元素投影到新形式中。
Enumerable.OrderByDescending 方法
按降序对序列的元素进行排序。
返回序列的第一个元素,如果没有找到元素,则返回默认值。
匿名类型提供了一种方便的方法,可以将一组只读属性封装到单个对象中,而无需先显式定义类型。类型名称由编译器生成,在源代码级别不可用。每个属性的类型由编译器推断。
语言集成查询 (LINQ) 是一组基于将查询功能直接集成到 C# 语言中的技术的名称。传统上,对数据的查询表示为简单的字符串,在编译时没有类型检查或 IntelliSense 支持。此外,您必须为每种类型的数据源学习不同的查询语言:SQL 数据库、XML 文档、各种 Web 服务等等。使用 LINQ,查询是一流的语言结构,就像类、方法、事件一样。您可以使用语言关键字和熟悉的运算符针对强类型的对象集合编写查询。
推荐阅读
- django - 使用 Django 2.0 捕获组
- neo4j - 使用 CSV 更新 Neo4j 中的现有关系属性值
- sharepoint - 无法在 sharepoint 经典页面中加载报告
- c# - 如何处理检索 i2c 缓冲区和设置模型/实体属性?
- sql-server - SQL Server 端点配置
- android - Flutter项目中ListView的滚动不流畅
- javascript - Highchart树形图颜色平均
- firebase - 生成 Firebase 云消息传递服务器令牌
- python - 循环遍历只有一个功能的列
- php - 创建一个链接以将查询信息发送到我的数据库中的某个位置