Более быстрый способ выполнения множественной замены строк

Мне нужно сделать следующее:

    static string[] pats = { "å", "Å", "æ", "Æ", "ä", "Ä", "ö", "Ö", "ø", "Ø" ,"è", "È", "à", "À", "ì", "Ì", "õ", "Õ", "ï", "Ï" };
    static string[] repl = { "a", "A", "a", "A", "a", "A", "o", "O", "o", "O", "e", "E", "a", "A", "i", "I", "o", "O", "i", "I" };
    static int i = pats.Length;
    int j;

     // function for the replacement(s)
     public string DoRepl(string Inp) {
      string tmp = Inp;
        for( j = 0; j < i; j++ ) {
            tmp = Regex.Replace(tmp,pats[j],repl[j]);
        }
        return tmp.ToString();            
    }
    /* Main flow processes about 45000 lines of input */

Каждая строка содержит 6 элементов, которые проходят через DoRepl. Приблизительно 300 000 вызовов функций. Каждый выполняет 20 Regex.Replace, всего около 6 миллионов замен. {общедоступный продукт Продукт {получить; устанавливать; }} И в моем контроллере я получаю исключение при попытке распечатать @ Html.TextBoxFor (p => p ....

У меня есть модель, похожая на эту:

public class SampleModel
{
     public Product Product { get; set; } 
}

И в моем контроллере я получаю исключение при попытке распечатать

@Html.TextBoxFor(p => p.Product.Name)

Это ошибка:

Exception: An expression tree may not contain a dynamic operation

Если кто-нибудь может дать мне несколько подсказок, как исправить это, я был бы очень признателен!

164
задан Scott Weldon 15 March 2017 в 00:45
поделиться