我正在为我的网站开发一个统计数据部分,但是我遇到了一些困难,无法想出如何获取“热门事物”(下面有解释):
我有以下表格:
ID | Spell1ID | Spell2ID
1 | 4 | 12
2 | 4 | 12
3 | 12 | 4
4 | 1 | 8
5 | 3 | 12
6 | 8 | 1
为了获取那些数据,我正在执行以下操作:
List<short[]> spellsList = new List<short[]>();
..
using (MySqlDataReader dbReader = Conex.Command.ExecuteReader())
{
while (dbReader.Read())
{
short[] tempArray = new short[2];
tempArray[0] = dbReader.GetInt16("spell1ID");
tempArray[1] = dbReader.GetInt16("spell2ID");
spellsList.Add(tempArray);
}
}
现在,我需要计算哪些值是最常见的(从最常见到不太常见),并且列表中每个数组的值的顺序不重要([4,12]和[12,4]是相同的,因为我实际上只需要SpellID以及它被使用的频率),所以对于这个例子来说,结果应该是:
1- 4, 12 (3 times)
2- 1,8 (2 times)
3- 3,12
使用LINQ和Lambda表达式来完成这个任务会非常好。
如果我的表达令人困惑,请见谅,英语不是我的母语。
tempArray
进行排序,然后使用GroupBy()
和一个IEqualityComparer
来处理数组的比较。每个结果组的计数将告诉你每个组合出现的次数。 - Peter Duniho