通过LinQ查询字符出现次数的实例方法
发布时间:2023-12-10 13:40:01
标签:LinQ查询
在一个项目中使用到一个问卷调查,在用户完成之后,需要统计所有题目中哪一个选项被选中次数最多。
我的实现方法是将所有题目选中的选项拼接为一个字符串,如:ABCADAA
在分析被选中次数的时候最初是将字符串变为字符数组,然后进行遍历统计,代码如下:
public static int GetMaxDiaplayChar(string str, out string val)
{
int times = 0;
val = "";
char max = str[0];
Dictionary<char, int> counter = new Dictionary<char, int>();
foreach (char c in str)
{
if (!char.IsLetter(c)) continue;
if (counter.ContainsKey(c)) counter[c]++;
else counter.Add(c, 1);
if (counter[max] < counter[c]) max = c;
}
times = counter[max];
val = max.ToString();
return times;
}
这样进行统计效率一般,且感觉有些太复杂了,于是在后期使用LinQ来进行改进,实现方法如下:
string content = "ABCADAA";
var ch = content.ToCharArray();
var query = ch.GroupBy(s => s).OrderByDescending(s => s.Count()).ToList();
for (int ri = 0; ri < query.Count(); ri++)
{
MessageBox.Show(query[ri].Key + " = " + query[ri].Count());
}
这样就可以比较简单的统计具体出现次数,如果需要对出现最少或者最多的字符进行统计,只需要对OrderBy和ToList进行修改就可以,比较灵活。
var queryMax = ch.GroupBy(s => s).OrderByDescending(s => s.Count()).SingleOrDefault();
var queryMin = ch.GroupBy(s => s).OrderBy(s => s.Count()).SingleOrDefault();
0
投稿
猜你喜欢
- 本文实例讲述了Java获得当前时间前指定几个小时具体时间的方法。分享给大家供大家参考,具体如下:package getBeforeHourD
- 这篇文章主要介绍了spring boot 全局异常处理方法汇总,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,
- ELK是三款软件的简称,分别是Elasticsearch、Logstash、Kibana组成,在发展的过程中,又有新成员Beats的加入,所
- 本文实例为大家分享了C#实现贪吃蛇小游戏的具体代码,供大家参考,具体内容如下之前一直想写一个贪吃蛇小游戏,上个周末终于有时间做了一个,现在和
- httpSecurity类似于spring security的xml配置文件命名空间配置中的<http>元素。它允许对特定的ht
- 今天使用jenkins构建时,报以下错误[ERROR] Failed to execute goal on project saas20:
- 今日遇到一个问题:springboot需要获取到一个自定义名称文件夹下的静态资源(图片等),并且文件夹的路径不在classPath下面,而是
- 第一篇讨论了面向对象编程和它的特点,关于Java和它的功能的常见问题,Java的集合类,垃圾收集器,本章主要讨论异常处理,Java小应用程序
- 一、前言文稿扫描大家用的都比较频繁、想是各种证件、文件都可以通过扫描文稿功能保存到手机。相比直接拍照,在扫描文稿时,程序会对图像进行一些矫正
- 概述 这是一个自定义色盘,根据点,直线和圆的几何学加上hsv颜色模型完成技术点几何:圆的标准方程式:(x-a)²
- 前言这里介绍一个.net自身携带的类ImageAnimator,这个类类似于控制动画的时间轴,使用ImageAnimator.CanAnim
- 要讲到C#源码的执行过程 首先要提下程序集,因为Clr并不是和托管摸块打交道的,而是和程序集(dll,exe)1、从哪里来程序集是由一个或者
- Java 执行 JS 脚本工具用途:为了便于系统扩展,提供了 JS 脚本的功能,可以通过在系统中执行脚本来获得更复杂的功能。例如:系统提供了
- 1.MyBatis中map的应用1.1.应用场景假设,实体类,或者数据库中的表,字段或者参数过多,应当考虑使用Map!!!1.2.具体实现/
- 前言Java中共有八种基本数据类型:byte,int,short,long,float,double,char,boolean。计算机中的基
- 1.简介使用线程池可以避免线程的频繁创建以及销毁。JAVA中提供的用于实现线程池的API:Executor、ExecutorService、
- Java的动态绑定所谓的动态绑定就是指程执行期间(而不是在编译期间)判断所引用对象的实际类型,根据其实际的类型调用其相应的方法。java继承
- 本文实例讲述了C#通过xpath查找xml指定元素的方法。分享给大家供大家参考。具体如下:orders.xml文档内容如下<?xml
- 使用maven引入jar<dependency> <groupId>com.itextpdf</g
- Java是一种强类型, 许多流行的编程语言都已经支持局部变量类型推断,如js,Python,C++等JDK10 可以使用var作为局部变量类