Я уже дал ответ на другой вопрос.
https://stackoverflow.com/a/30120166/2282794
Я работал над действительно крупномасштабной системой с похожими требованиями соответствия имен, о которых вы говорили.
Сопоставление имен не очень простое, и порядок имен и фамилий может отличаться.
В таких сценариях простые алгоритмы нечеткого сопоставления имен терпят неудачу.
Если мы просто хотим поговорить об алгоритмах сопоставления приближенных строк, то их много. Немногие из них: Яро-Винклер, Редактировать расстояние (Левенштейн), Сходство Жакара, алгоритмы, основанные на Soundex / Фонетике и т. Д. Простое прибегание к поиску даст нам все детали.
Вы можете реализовать их все в C #
Ирония в том, что они работают, пока вы пытаетесь сопоставить две заданные строки ввода. Хорошо, теоретически, чтобы продемонстрировать, как работает нечеткое или приближенное сопоставление строк.
Тем не менее, очень недооценивается вопрос, как мы используем то же самое в производственных условиях. Не все, кого я знаю, кто искал примерный алгоритм сопоставления строк, знали, как они могут решить то же самое в производственной среде.
Возможно, я только что говорил о Lucene, который специфичен для Java, но есть и Lucene для .Net.
https://lucenenet.apache.org/