Я реализовал поисковый запрос.Он заменяет специальные символы на «нормализованные».Я применил это правило на разных полях.На самом деле, запрос выглядит очень некрасиво и полон DRY-нарушений.
Но переосмыслить это, кажется, нелегко (для меня).Конечно, я только что попытался изменить весь Replace-Stuff в отдельный метод, но это привело к ошибке, такой как
LINQ to Entities не распознает метод 'System.String Help (System.String) ', и этот метод не может быть переведен в магазин выражений ...
Приведенный ниже код показывает часть запроса, в нем даже больше таких операторов.Если бы у кого-нибудь была идея сделать это лучше, было бы здорово!
qry = qry.Where(guest =>
(guest.FirstName
.Replace("ü", "u").Replace("ue", "u").Replace("û", "u").Replace("ù", "u").Replace("ú", "u")
.Replace("ä", "a").Replace("ae", "a").Replace("â", "a").Replace("à", "a").Replace("á", "a")
.Replace("ë", "e").Replace("ê", "e").Replace("è", "e").Replace("é", "e")
.Replace("ö", "o").Replace("oe", "o").Replace("ô", "o").Replace("ò", "o").Replace("ó", "o")
.Replace("ï", "i").Replace("ì", "i").Replace("ì", "i").Replace("í", "i")
.Replace("ç", "c")
.Replace(".", "").Replace("-", "").Replace("_", "").Replace("´", "").Replace("'", "").Replace("\"", "")
.Replace("(", "").Replace(")", "").Replace("[", "").Replace("]", "").Replace("{", "").Replace("}", "")
.Replace("$", "").Replace("+", "").Replace("*", "").Replace("@", "")
.Replace("|", "").Replace("\\", "").Replace("/", "").Replace("<", "").Replace(">", "")
.Replace(".", "").Replace(",", "").Replace(";", "").Replace(":", "")
.Replace("=", "").Replace("%", "").Replace("^", "").Replace("?", "").Replace("!", "")
.StartsWith(firstName)
&& (guest.LastName
.Replace("ü", "u").Replace("ue", "u").Replace("û", "u").Replace("ù", "u").Replace("ú", "u")
.Replace("ä", "a").Replace("ae", "a").Replace("â", "a").Replace("à", "a").Replace("á", "a")
.Replace("ë", "e").Replace("ê", "e").Replace("è", "e").Replace("é", "e")
.Replace("ö", "o").Replace("oe", "o").Replace("ô", "o").Replace("ò", "o").Replace("ó", "o")
.Replace("ï", "i").Replace("ì", "i").Replace("ì", "i").Replace("í", "i")
.Replace("ç", "c")
.Replace(".", "").Replace("-", "").Replace("_", "").Replace("´", "").Replace("'", "").Replace("\"", "")
.Replace("(", "").Replace(")", "").Replace("[", "").Replace("]", "").Replace("{", "").Replace("}", "")
.Replace("$", "").Replace("+", "").Replace("*", "").Replace("@", "")
.Replace("|", "").Replace("\\", "").Replace("/", "").Replace("<", "").Replace(">", "")
.Replace(".", "").Replace(",", "").Replace(";", "").Replace(":", "")
.Replace("=", "").Replace("%", "").Replace("^", "").Replace("?", "").Replace("!", "")
.StartsWith(lastName)
||
guest.LastName
.Replace("ü", "u").Replace("ue", "u").Replace("û", "u").Replace("ù", "u").Replace("ú", "u")
.Replace("ä", "a").Replace("ae", "a").Replace("â", "a").Replace("à", "a").Replace("á", "a")
.Replace("ë", "e").Replace("ê", "e").Replace("è", "e").Replace("é", "e")
.Replace("ö", "o").Replace("oe", "o").Replace("ô", "o").Replace("ò", "o").Replace("ó", "o")
.Replace("ï", "i").Replace("ì", "i").Replace("ì", "i").Replace("í", "i")
.Replace("ç", "c")
.Replace(".", "").Replace("-", "").Replace("_", "").Replace("´", "").Replace("'", "").Replace("\"", "")
.Replace("(", "").Replace(")", "").Replace("[", "").Replace("]", "").Replace("{", "").Replace("}", "")
.Replace("$", "").Replace("+", "").Replace("*", "").Replace("@", "")
.Replace("|", "").Replace("\\", "").Replace("/", "").Replace("<", "").Replace(">", "")
.Replace(".", "").Replace(",", "").Replace(";", "").Replace(":", "")
.Replace("=", "").Replace("%", "").Replace("^", "").Replace("?", "").Replace("!", "")
.Contains(" " + lastName)
||
guest.LastName.Replace(" ", "")
.Replace("ü", "u").Replace("ue", "u").Replace("û", "u").Replace("ù", "u").Replace("ú", "u")
.Replace("ä", "a").Replace("ae", "a").Replace("â", "a").Replace("à", "a").Replace("á", "a")
.Replace("ë", "e").Replace("ê", "e").Replace("è", "e").Replace("é", "e")
.Replace("ö", "o").Replace("oe", "o").Replace("ô", "o").Replace("ò", "o").Replace("ó", "o")
.Replace("ï", "i").Replace("ì", "i").Replace("ì", "i").Replace("í", "i")
.Replace("ç", "c")
.Replace(".", "").Replace("-", "").Replace("_", "").Replace("´", "").Replace("'", "").Replace("\"", "")
.Replace("(", "").Replace(")", "").Replace("[", "").Replace("]", "").Replace("{", "").Replace("}", "")
.Replace("$", "").Replace("+", "").Replace("*", "").Replace("@", "")
.Replace("|", "").Replace("\\", "").Replace("/", "").Replace("<", "").Replace(">", "")
.Replace(".", "").Replace(",", "").Replace(";", "").Replace(":", "")
.Replace("=", "").Replace("%", "").Replace("^", "").Replace("?", "").Replace("!", "")
.StartsWith(lastName))
) || (
guest.FirstName
.Replace("ü", "u").Replace("ue", "u").Replace("û", "u").Replace("ù", "u").Replace("ú", "u")
.Replace("ä", "a").Replace("ae", "a").Replace("â", "a").Replace("à", "a").Replace("á", "a")
.Replace("ë", "e").Replace("ê", "e").Replace("è", "e").Replace("é", "e")
.Replace("ö", "o").Replace("oe", "o").Replace("ô", "o").Replace("ò", "o").Replace("ó", "o")
.Replace("ï", "i").Replace("ì", "i").Replace("ì", "i").Replace("í", "i")
.Replace("ç", "c")
.StartsWith(lastName)
&& (guest.LastName
.Replace("ü", "u").Replace("ue", "u").Replace("û", "u").Replace("ù", "u").Replace("ú", "u")
.Replace("ä", "a").Replace("ae", "a").Replace("â", "a").Replace("à", "a").Replace("á", "a")
.Replace("ë", "e").Replace("ê", "e").Replace("è", "e").Replace("é", "e")
.Replace("ö", "o").Replace("oe", "o").Replace("ô", "o").Replace("ò", "o").Replace("ó", "o")
.Replace("ï", "i").Replace("ì", "i").Replace("ì", "i").Replace("í", "i")
.Replace("ç", "c")
.Replace(".", "").Replace("-", "").Replace("_", "").Replace("´", "").Replace("'", "").Replace("\"", "")
.Replace("(", "").Replace(")", "").Replace("[", "").Replace("]", "").Replace("{", "").Replace("}", "")
.Replace("$", "").Replace("+", "").Replace("*", "").Replace("@", "")
.Replace("|", "").Replace("\\", "").Replace("/", "").Replace("<", "").Replace(">", "")
.Replace(".", "").Replace(",", "").Replace(";", "").Replace(":", "")
.Replace("=", "").Replace("%", "").Replace("^", "").Replace("?", "").Replace("!", "")
.StartsWith(firstName)
||
guest.LastName
.Replace("ü", "u").Replace("ue", "u").Replace("û", "u").Replace("ù", "u").Replace("ú", "u")
.Replace("ä", "a").Replace("ae", "a").Replace("â", "a").Replace("à", "a").Replace("á", "a")
.Replace("ë", "e").Replace("ê", "e").Replace("è", "e").Replace("é", "e")
.Replace("ö", "o").Replace("oe", "o").Replace("ô", "o").Replace("ò", "o").Replace("ó", "o")
.Replace("ï", "i").Replace("ì", "i").Replace("ì", "i").Replace("í", "i")
.Replace("ç", "c")
.Replace(".", "").Replace("-", "").Replace("_", "").Replace("´", "").Replace("'", "").Replace("\"", "")
.Replace("(", "").Replace(")", "").Replace("[", "").Replace("]", "").Replace("{", "").Replace("}", "")
.Replace("$", "").Replace("+", "").Replace("*", "").Replace("@", "")
.Replace("|", "").Replace("\\", "").Replace("/", "").Replace("<", "").Replace(">", "")
.Replace(".", "").Replace(",", "").Replace(";", "").Replace(":", "")
.Replace("=", "").Replace("%", "").Replace("^", "").Replace("?", "").Replace("!", "")
.Contains(" " + firstName)
||
guest.LastName.Replace(" ", "")
.Replace("ü", "u").Replace("ue", "u").Replace("û", "u").Replace("ù", "u").Replace("ú", "u")
.Replace("ä", "a").Replace("ae", "a").Replace("â", "a").Replace("à", "a").Replace("á", "a")
.Replace("ë", "e").Replace("ê", "e").Replace("è", "e").Replace("é", "e")
.Replace("ö", "o").Replace("oe", "o").Replace("ô", "o").Replace("ò", "o").Replace("ó", "o")
.Replace("ï", "i").Replace("ì", "i").Replace("ì", "i").Replace("í", "i")
.Replace("ç", "c")
.Replace(".", "").Replace("-", "").Replace("_", "").Replace("´", "").Replace("'", "").Replace("\"", "")
.Replace("(", "").Replace(")", "").Replace("[", "").Replace("]", "").Replace("{", "").Replace("}", "")
.Replace("$", "").Replace("+", "").Replace("*", "").Replace("@", "")
.Replace("|", "").Replace("\\", "").Replace("/", "").Replace("<", "").Replace(">", "")
.Replace(".", "").Replace(",", "").Replace(";", "").Replace(":", "")
.Replace("=", "").Replace("%", "").Replace("^", "").Replace("?", "").Replace("!", "")
.StartsWith(firstName))
));