删除其他日期的行

时间:2016-03-12 07:07:51

标签: c# winforms datetime split

我有很多这样的行

PrId    Name  Quantity  Price   Date
  3     Milk    2        100   23-08-15

我从txt文件导入 我制作了所有的线条,并为每个线条制作了所有参数,如

id is lines[i].Split('\t')[0]
Name is lines[i].Split('\t')[1]
Quantity is lines[i].Split('\t')[2]
Price is lines[i].Split('\t')[3]
and date is lines[i].Split('\t')[4]

如何删除除日期为23-08-15

的行以外的所有行

2 个答案:

答案 0 :(得分:1)

使用可以使用简单的Linq语句。

var date = DateTime.ParseExact("23-08-15", "dd-MM-yy", null);

var filterdLines = File.ReadAllLines(@"inputfile")
                .Where(s => DateTime.ParseExact(s.Split('\t')[4], "dd-MM-yy", null) == date)
                .ToList();

File.WriteAllLine("outputfile", filterdLines);

答案 1 :(得分:0)

您应该按照以下步骤操作:

1)识别日期为23-08-15的行。这可以使用DateTime.TryParseExact函数完成:

DateTime buffer;
bool parseOk = DateTime.TryParseExact(lines[i].Split('\t')[4], "dd/MM/yy", CultureInfo.InvariantCulture, null, out buffer);

if (buffer != new DateTime(2015, 08, 23))
    // skip the line

2)回写过滤后的行。目前还不清楚是否需要这样做,但如果你必须将行写回文件,你可以使用

File.WriteAllLines("outputfile", filteredLines);