国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C# > 正文

通過LinQ查詢字符出現(xiàn)次數(shù)的實(shí)例方法

2020-01-24 03:04:44
字體:
供稿:網(wǎng)友

在一個(gè)項(xiàng)目中使用到一個(gè)問卷調(diào)查,在用戶完成之后,需要統(tǒng)計(jì)所有題目中哪一個(gè)選項(xiàng)被選中次數(shù)最多。
我的實(shí)現(xiàn)方法是將所有題目選中的選項(xiàng)拼接為一個(gè)字符串,如:ABCADAA
在分析被選中次數(shù)的時(shí)候最初是將字符串變?yōu)樽址麛?shù)組,然后進(jìn)行遍歷統(tǒng)計(jì),代碼如下:

復(fù)制代碼 代碼如下:

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;
}

這樣進(jìn)行統(tǒng)計(jì)效率一般,且感覺有些太復(fù)雜了,于是在后期使用LinQ來進(jìn)行改進(jìn),實(shí)現(xiàn)方法如下:

復(fù)制代碼 代碼如下:

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());
}

這樣就可以比較簡單的統(tǒng)計(jì)具體出現(xiàn)次數(shù),如果需要對出現(xiàn)最少或者最多的字符進(jìn)行統(tǒng)計(jì),只需要對OrderBy和ToList進(jìn)行修改就可以,比較靈活。

復(fù)制代碼 代碼如下:

var queryMax = ch.GroupBy(s => s).OrderByDescending(s => s.Count()).SingleOrDefault();
var queryMin = ch.GroupBy(s => s).OrderBy(s => s.Count()).SingleOrDefault();

發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 肥西县| 会理县| 大关县| 罗山县| 宜章县| 武城县| 济源市| 盐亭县| 得荣县| 凉城县| 宜兴市| 常宁市| 通山县| 电白县| 四会市| 保定市| 静海县| 施秉县| 石台县| 泾源县| 青岛市| 罗源县| 湟中县| 寻乌县| 泸溪县| 武鸣县| 万盛区| 日土县| 双江| 改则县| 合江县| 上高县| 同江市| 汝阳县| 印江| 新化县| 方城县| 旬邑县| 堆龙德庆县| 尉犁县| 当雄县|