Основная причина заключается в том, что вы используете дословно строковый литерал (с префиксом @
) и заканчиваете его литералом \
. В результате Replace
в конечном итоге будет искать замену последовательности символов \
, r
, \
, n
, \
вместо новой строки.
Это должно исправить это:
string result = comments.Replace("\r\n", ""); // Not idiomatic
Но более идиоматическим (и переносимым) будет:
string result = comments.Replace(Environment.NewLine, "");
(РЕДАКТИРОВАТЬ: Это, конечно, предполагает, что системы, которые пишут в БД, используют те же соглашения о новой строке, что и системы, которые читают из него, или что переводы происходят прозрачно. Если это не так, вы, конечно, лучше использовать фактическую последовательность символов, которую вы хотите использовать для представления новой строки.)
Кстати, похоже, вы пытаетесь избавиться от всех пробелов.
В этом случае вы можете сделать:
// Split() is a psuedo-overload that treats all whitespace
// characters as separators.
string result = string.Concat(comments.Split());