title: C# human name checking and matching algorithm
body: <p>Is there an algorith or C# library to determine if a human name is correct or not and, if not, to find its nearest matching?</p>
  
  <p>I found algorithms for string matching like the Levenshtein's distance algorithm, but all of them check the matching between one string and another, and i want to check the matching between one name and all the possible names in English (for example), to check if the name was wrongly written.</p>
  
  <p>For example:
  Someone inserts the name "Giliam" while it should be "william". I want to know if there are any algorithm (or group of them) to detect the error and propose a correction.</p>
  
  <p>All solutions that come to my mind involves the implementation of a huge human name's dictionary and use it to check for the correctness of each input name matching one by one... And it sounds terrorific performace to me, so i want to ask for a better approach.</p>
  
  <p>Thanks.</p>