C#StreamWriter书写不正确

C#StreamWriter书写不正确,c#,.net,sql-server-2008,streamwriter,C#,.net,Sql Server 2008,Streamwriter,我从存储过程中提取数据,并将每一列写入一个文件。我从中提取的一列是一个备注字段,最多允许4096个字符和硬回车。我已经更新了我的查询,以删除选项卡和返回,这似乎是可行的。当我将查询结果导出到文件时,备注列都在一行上。但是,当我使用stream writer将数据写入文件时,它会将数据分成多行。非常感谢您的帮助 C#代码: Sql查询: SELECT replace(replace(replace(isnull(MEMOCOLUMN, ''), CHAR(13), ' '), CHAR(1

我从存储过程中提取数据,并将每一列写入一个文件。我从中提取的一列是一个备注字段,最多允许4096个字符和硬回车。我已经更新了我的查询,以删除选项卡和返回,这似乎是可行的。当我将查询结果导出到文件时,备注列都在一行上。但是,当我使用stream writer将数据写入文件时,它会将数据分成多行。非常感谢您的帮助

C#代码:

Sql查询:

    SELECT replace(replace(replace(isnull(MEMOCOLUMN, ''), CHAR(13), ' '), CHAR(10), ''), CHAR(9), '')
    FROM TABLE1

下面的步骤应该是可行的,可能会有拼写错误,但过程应该是功能性的

    using (StreamWriter sw = new StreamWriter("C:\\Temp\\Test.txt")) 
    {
     DataSet ds = GetData(); //call sproc, return data
     foreach(DataRow dr in ds.Rows) 
     {
       var column = string.IsNullOrEmpty((dr["MemoColumn"].ToString()) ? string.Empty : 
                    dr["MemoColumn"].ToString().Replace(Environment.NewLine, string.Empty);

       sw.WriteLine("{0}|{1}|{2}", dr["Column1"], column, dr["Column3"]);
     }
    }

您是否也删除了
\n
s?是的,我尝试过这样做:dr[“MemoColumn”].ToString().Replace(“\n”,”).Replace(“\t”,”);还是没有work@SLaks
\r
\n
是字符(13)和字符(10),可能没有按顺序排列。尝试只使用sw。写入并在结尾处放置“\n”。没用。@btjordan23:那句话实际上没什么用。字符串是不可变的。
ToString()
将永远不会返回null。如果为True,则可以删除该检查。
    using (StreamWriter sw = new StreamWriter("C:\\Temp\\Test.txt")) 
    {
     DataSet ds = GetData(); //call sproc, return data
     foreach(DataRow dr in ds.Rows) 
     {
       var column = string.IsNullOrEmpty((dr["MemoColumn"].ToString()) ? string.Empty : 
                    dr["MemoColumn"].ToString().Replace(Environment.NewLine, string.Empty);

       sw.WriteLine("{0}|{1}|{2}", dr["Column1"], column, dr["Column3"]);
     }
    }