如何从文本中找到最大出现的单词?

时间:2011-09-02 12:09:42

标签: c# asp.net linq

我有一个包含string值的数据库字段。 我正在寻找一种方法来找到来自字段的前10个最大出现的单词

3 个答案:

答案 0 :(得分:8)

首先从该字段中获取所有单词:

IEnumerable<string> allWords = from entry in table
                               from word in entry.Field.Split(' ')
                               select word;

然后根据他们的计数对他们进行分组:

IEnumerable<string> result = from word in allWords
                             group word by word into grouped
                                 let count = grouped.Count()
                                 orderby count descending
                                 select grouped.Key;

获得前10名成绩:

result.Take(10);

答案 1 :(得分:2)

var result =
    Regex.Matches(s, @"\b\w+\b").OfType<Match>()
        .GroupBy(k => k.Value, (g, u) => new { Word = g, Count = u.Count() })
        .OrderBy(n => n.Count)
        .Take(10);

答案 2 :(得分:2)

这里有一个简单的数字示例:

class Program
{
    static void Main(string[] args)
    {
        int[] nums = new int[] { 2, 3, 4, 5, 6, 1, 2, 3, 1, 1, 1, 7, 12, 451, 13, 
            46, 1, 1, 3, 2, 3, 4, 5, 3, 2, 4, 4, 5, 6, 6, 8, 9, 0};
        var numberGroups =
            (from n in nums
            group n by n into g
            orderby g.Count() descending
            select new { Number = g.Key, Count = g.Count() }
            ).Take(10);

        Console.ReadLine();
    }
}

此致