2

我正在使用 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。

我知道这是最糟糕的实现。请告诉我正确的方向。

4

2 回答 2

1

您可以使用 List 和 class teamdata 简化您的设计Dictionary<long,HashSet<string>> teams- 其中 key 是团队 ID,value 是一组备用名称,找到团队的问题是调用(假设你的 `

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;
于 2013-03-28T15:13:56.860 回答
0

这种问题可以用模糊逻辑来解决(http://en.wikipedia.org/wiki/Fuzzy_logic)。如果您使用 SQL Server,SOUNDEX 函数可能会对您有所帮助。

于 2013-03-28T15:13:56.377 回答