【发布时间】:2015-12-28 22:53:43
【问题描述】:
我需要在列表中找到与列表中至少一个其他对象相交的所有对象。这是由几个设置决定的:
- “重复检查”字段列表(例如,Person 可以与
FirstName、LastName或DOB相交)。 - 两个人相交的最小字段数必须相等(例如,如果数字是 2,如果人 A 和人 B 有相同的
FirstName和LastName,相同的@987654326,则他们将相交@ 和DOB,或相同的LastName和DOB)。
确定这一点的最有效方法是什么?目前,使用带有GROUP BY 语句的SQL 和临时表是最高效的,但还不够好。我尝试在 C#/LINQ 中使用字典和硬编码各种属性检查,但情况更糟。我一直在研究不相交的集合和 Levenshtein 距离,但这对于大型列表来说似乎同样低效。这只是一个 NP 完全问题吗?
【问题讨论】:
-
有样本数据可以玩吗?
-
您应该始终使用 rdbms 标签、sql server、mysql 等
标签: sql-server algorithm linq optimization data-structures