微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

将列重新排列为txt文件C#

如何解决将列重新排列为txt文件C#

我有多列,我想重新排序到txt文件中,到目前为止,第一列已正确插入,但我希望下一列在侧面,它们一直在末尾书写。 这是我到目前为止所拥有的

WITH calling_time AS
  (SELECT fe.date,ti.call_time,ti.call_duration,count(disTINCT user_id) AS CALLED
   FROM call_log clo
   INNER JOIN loging fe 
         ON clo.user_id = fe.id
   INNER JOIN loging_communication ti 
         ON fe.user_id = ti.id
   WHERE clo.date_call >= dateadd(DAY,-90,getdate())::date
   GROUP BY 1,2,3),look_up AS
  (SELECT MAX(date) date,a.call_time,a.call_duration,cast(a.call_time AS varchar(10)) +
           '_' + 
           cast(a.call_duration AS varchar(10)) combine_time,b.count[total_call]
   FROM calling_time a
   INNER JOIN
     (SELECT call_time,call_duration,count(*) COUNT
      FROM calling_time
      GROUP BY call_time,call_duration) b 
     ON a.call_time = b.call_time
     AND a.call_duration = b.call_duration
   GROUP BY a.call_time,b.count)

SELECT * FROM look_up

但是我不断得到这个

StreamReader sr = new StreamReader(file.FullName,System.Text.Encoding.GetEncoding("iso-8859-1"));
List <Campos> listaEsquemaEnTrada = LeerXML(RutaArchivoConfig);
var lista = File.ReadAllLines(file.FullName);           
string Separador = ObtenerSeparador(RutaArchivoConfig);
int filaInicial = ObtenerLineaInicial(RutaArchivoConfig);
List<string> ListaFinal = new List<string>();
bool PrimeraIteracion = true;
foreach (Campos campos in listaEsquemaEnTrada)
{
    if (campos.columna != 99)
    {
        using (System.IO.StreamWriter ArchivoSalida =
                new System.IO.StreamWriter(RutaOrigen + "\\" + "nuevoArchivo.txt",true))
        {
            if (PrimeraIteracion)
            {
                foreach (string line in lista)
                {
                    ArchivoSalida.WriteLine(line.Split(Char.Parse(Separador))[campos.columna - 1]);
                }
                PrimeraIteracion=false;
            }
            else
            {
                foreach (string line in lista)
                {
                    ArchivoSalida.WriteLine(Separador + line.Split(Char.Parse(Separador))[campos.columna - 1]);
                }
            }
           
        }
    }
    else
    {
        continue;
    }
}

我想要这样的东西:

C�digo de la Cuenta Contable 
111100101   
111150012   
111150016   
111150028   
111150039   
116150101   
116150101   
|Tipo de Comprobante 
|APE
|APE

解决方法

是的,这就是文本文件的工作方式。如果您已将一列写入文本文件:

var first = new [] { "header","line1","line2","line3" };
File.WriteAllLines(@"c:\temp\file.txt",first);

您还想写另一列

var second = new [] { "header2","newline1","newline2","newline3" };

读取整个文件,在每一行的末尾添加新的位,然后再次写入整个文件,可能是最简单的:

var file = File.ReadAllLines(@"c:\temp\file.txt");
for(int i = 0; i < file.Length; i++)
  file[i] += '\t' + second[i]; //add the second column after the first,with a tab

File.WriteAllLines(@"c:\temp\file.txt",file);

当然,如果您在第一次写入文件之前就同时拥有firstsecond(如List,数组,IEnumerable<string>等),然后进行结合;无需重新读取文件。如果您希望修改以前编写的现有文件(例如,昨天,当您没有第二列数据时),我只想输入

如果文件很大,则可以更多地参与逐步读取一个文件(请参阅File.ReadLines)和逐步写入另一个文件(StreamWriter等),因此您不会将整个内容缓冲到内存中。但是,如果您要谈论的文件小于10 MB,请采用简单的方法,然后将其全部读取,修改,全部写入

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。