我正在使用VS2010 Express和新手进行编程。
我从不同的网站提取投注赔率并制作记录。
但是,他们为同一个团队使用不同的名称,这是在整个网站上匹配团队的唯一方法。
例如,Man United,Man Utd,Manchester United,Manu是同一支球队,但在不同的网站上使用。
我认为这不是一个罕见的问题,应该有一些标准的方法或对象类型来解决它。
如果有,请告诉我。
在这个阶段,我决定将列表作为数据库
List<teamdata> teamTable = new List<teamdata>();
public class teamdata
{
private long teamId;
private List<string> teamName; // Names like Man United, Man Utd... are added
...
}
我需要在表格中搜索每个名称(一些快速搜索算法),直到可以分配团队ID。
我知道这是最糟糕的实施方案。请告诉我正确的方向。
答案 0 :(得分:1)
您可以使用List和类teamdata将设计简化为Dictionary<long,HashSet<string>> teams
- 其中key是团队ID,值是备用名称的集合,
找到团队的问题就是打电话(让我们说你的`
Dictionary<long,HashSet<string>> teams = new Dictionary<long,HashSet<string>>();
... fill data
string queryName = "Man Utd"`)
var teamOrNull = teams.Where(p=>p.Value.Contains(queryName)).FirstOrDefault()
if(teamOrNull != null)
long foundID = teamOrNull.Key;
答案 1 :(得分:0)
这种问题可以通过模糊逻辑(http://en.wikipedia.org/wiki/Fuzzy_logic)来解决。如果您使用SQL Server,SOUNDEX函数可能会对您有所帮助。