繁体   English   中英

按日期多次删除csv行

[英]Multiple delete in csv rows by dates

追求我删除csv文件中多行的目标。 我的想法是获取两个日期之间不包括删除的日期。 但是我该如何迭代两个日期之间的几天,并在那里获取值以字符串化,并用于我的代码来评估包含该字段的csv文件。

  private void button2_Click(object sender, EventArgs e)
  {
    DateTime start = new DateTime(01 / 25 / 2015);
    DateTime end = new DateTime(01 / 27 / 2015);

    var dates = new List<DateTime>();

    for (var dt = start; dt <= end; dt = dt.AddDays(1))
    {
      dates.Add(dt);

      var oldLines = System.IO.File.ReadAllLines(txtFileName.Text);
      var newLines = oldLines.Where(line => 
      line.Contains(dates.ToString()));          
      System.IO.File.WriteAllLines(txtFileName.Text, newLines);

      newLines = oldLines.Select(line => new

        {
            Line = line,
            Words = line.Split(' ')
        })
         .Where(lineInfo => lineInfo.Words.Contains(dates.ToString()))
         .Select(lineInfo => lineInfo.Line);
     }
  } 

输入:

“雇员代码”,“日期”,“时间”,“类型”
“ 3434”,“ 2013/01/22”,“ 07:54”,“ 0”
“ 3023”,“ 2014/01/23”,“ 07:54”,“ 0”
“ 2897”,“ 2015/01/24”,“ 07:54”,“ 0”
“ 3734”,“ 2015年1月25日”,“ 07:54”,“ 0”
“ 3168”,“ 2015年1月26日”,“ 07:54”,“ 0”
“ 4863”,“ 2015年1月26日”,“ 07:55”,“ 0”
“ 2513”,“ 2015/01/27”,“ 07:55”,“ 0”
“ 2582”,“ 2015/01/27”,“ 07:55”,“ 0”

输出:

“雇员代码”,“日期”,“时间”,“类型”
“ 3734”,“ 2015年1月25日”,“ 07:54”,“ 0”
“ 3168”,“ 2015年1月26日”,“ 07:54”,“ 0”
“ 4863”,“ 2015年1月26日”,“ 07:55”,“ 0”
“ 2513”,“ 2015/01/27”,“ 07:55”,“ 0”
“ 2582”,“ 2015/01/27”,“ 07:55”,“ 0”

建议,评论,共享代码和想法都受到高度赞赏。

一种更典型的方法是查看所有行,提取相关部分,将它们转换为实际日期,并将它们与具有常规不等式的开始日期和结束日期进行比较。

private void button2_Click(object sender, EventArgs e)
{
    DateTime start = new DateTime(2015,01,26);
    DateTime end = new DateTime(2015,01,27);

    var oldLines = System.IO.File.ReadAllLines(txtFileName.Text);
    var newLines = oldLines
        .Select(line => new { line, date = DateTime.Parse(line.Split(',')[1]) })
        .Where(line => line.date > start and line.date < end)
        .Select(line => line.line)
        .ToArray();

    System.IO.File.WriteAllLines(txtFileName.Text, newLines);
}

这不考虑标题行,但是您可以单独处理。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM