替换结果中的字符

时间:2012-06-02 10:47:56

标签: c# linq-to-sql

我需要将字符;和换行符替换为字段p.notas。我尝试了这个,但它没有取代换行符。

var res = from p in miDataContext.clientes
          orderby p.nombreCom
          select                             
              (p.nombreCom ?? "") + ";" +
              (p.razon ?? "") + ";" +
              (p.nif ?? "") + ";" +                                 
              ((p.notas ?? "").Replace (";" ,"."))
                  .Replace(Environment.NewLine , ". ");

1 个答案:

答案 0 :(得分:2)

Environment.NewLine调用中使用Replace()的问题是,环境中的换行符不一定与字符串中实际使用的字符匹配。你的可能有\r\n(窗口),但实际存储的只是\n。在那种情况下,该模式绝对不在字符串中。您必须检查所有换行符。

假设这在LINQ to SQL中都很好,只需为每个换行类型添加更多替换调用。

var res = from p in miDataContext.clientes
          orderby p.nombreCom
          select
              (p.nombreCom ?? "") + ";" +
              (p.razon ?? "") + ";" +
              (p.nif ?? "") + ";" +                                 
              ((p.notas ?? "").Replace(";", "."))
                  .Replace("\r\n", ". ")
                  .Replace("\n", ". ")
                  .Replace("\r", ". ");