源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

通过LinQ查询字符出现次数的实例方法

  • 时间:2022-03-04 02:59 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:通过LinQ查询字符出现次数的实例方法
在一个项目中使用到一个问卷调查,在用户完成之后,需要统计所有题目中哪一个选项被选中次数最多。 我的实现方法是将所有题目选中的选项拼接为一个字符串,如:ABCADAA 在分析被选中次数的时候最初是将字符串变为字符数组,然后进行遍历统计,代码如下:
[u]复制代码[/u] 代码如下:
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来进行改进,实现方法如下:
[u]复制代码[/u] 代码如下:
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进行修改就可以,比较灵活。
[u]复制代码[/u] 代码如下:
var queryMax = ch.GroupBy(s => s).OrderByDescending(s => s.Count()).SingleOrDefault(); var queryMin = ch.GroupBy(s => s).OrderBy(s => s.Count()).SingleOrDefault();
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部