a亚洲精品_精品国产91乱码一区二区三区_亚洲精品在线免费观看视频_欧美日韩亚洲国产综合_久久久久久久久久久成人_在线区

首頁 > 編程 > C# > 正文

通過LinQ查詢字符出現次數的實例方法

2020-01-24 03:04:44
字體:
來源:轉載
供稿:網友

在一個項目中使用到一個問卷調查,在用戶完成之后,需要統計所有題目中哪一個選項被選中次數最多。
我的實現方法是將所有題目選中的選項拼接為一個字符串,如: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();

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 精品国产一区二区三区久久影院 | 天天久久 | 在线免费观看黄 | 久久久久久久久国产成人免费 | 91在线一区二区 | 成人欧美一区二区三区白人 | 毛片在线免费 | 香蕉一区| 国产精品一区二区在线免费观看 | 国产精品99久久久久久动医院 | 黄色影视片 | 亚洲欧美中文日韩v在线观看 | 伊人精品视频在线观看 | 国产精品久久久久无码av | 国产精品成人免费一区二区视频 | 精品视频在线免费 | av中文字幕在线播放 | 在线看一区二区 | 美女久久 | 欧美日本在线观看 | 黄免费视频 | 免费黄色在线网址 | 久久一本 | 午夜影院18| www.国产一区 | 国产欧美精品一区二区三区四区 | 亚洲色图p | 成人黄色免费 | 国产激情视频在线观看 | 经典三级在线播放 | 日本xxxxxxxxxxxxxxx | 欧美精品一区久久 | 日本一区二区视频在线 | 国产精品第一区第27页 | 亚洲黄色高清视频 | 亚洲国产精品成人无久久精品 | 在线观看亚洲精品视频 | 91精品国产日韩91久久久久久 | 欧美在线视频一区二区 | www.四虎.com| 亚洲欧洲视频 |