我有一个包含string
值的数据库字段。
我正在寻找一种方法来找到来自字段的前10个最大出现的单词
答案 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();
}
}
此致