假设我有存储日志数据的文本文件
2019-03-01 20:00:18; Value1; Value2
2019-03-01 20:00:23; Value1; Value2
2019-03-01 20:00:28; Value1; Value2
我在字典中很有价值
ID = Value1
StartDateTime = 2019-03-01 20:00:18
OffDateTime = 2019-03-01 20:00:27
Value = 9
我想更新持续时间在StartDateTime和OffDateTime之间的文本文件中所有记录中的Value1。
在这种情况下,它将更新第一行和第二行。
现在我正在使用这个
if (textFileCurrentLineDateTime >= StartDateTime && textFileNextLineDateTime < OffDateTime)
{
//this line need to update value
}
如果StartDateTime和OffDateTime的持续时间不超过1个记录,则可以正常工作。
答案 0 :(得分:0)
internal class Program
{
private static Line CreateLineFromString(string line)
{
string[] array = line.Split(';');
return new Line
{
DateTime = Convert.ToDateTime(array[0],CultureInfo.InvariantCulture),
Value1 = array[1],
Value2 = array[2]
};
}
private static void Main(string[] args)
{
Console.WriteLine("Hello World!");
IEnumerable<Line> lines = ReadLines().ToList();
var startDate = new DateTime(2019, 1, 1);
var endDate = new DateTime(2019, 6, 30);
foreach (Line line in lines.Where(line => line.DateTime >= startDate && line.DateTime <= endDate)) line.Value1 = "New Value";
SaveLines(lines);
}
private static IEnumerable<Line> ReadLines()
{
using (var reader = new StreamReader("d:\\TextFile1.txt"))
{
string stringLine;
while ((stringLine = reader.ReadLine()) != null)
if (stringLine != string.Empty)
yield return CreateLineFromString(stringLine);
}
}
private static void SaveLines(IEnumerable<Line> lines)
{
using (var writer = new StreamWriter("d:\\TextFile1.txt",false))
{
foreach (Line line in lines) writer.WriteLine(line.ToString());
}
}
}
public class Line
{
public DateTime DateTime { get; set; }
public string Value1 { get; set; }
public string Value2 { get; set; }
public override string ToString()
{
return $"{DateTime.ToString(CultureInfo.InvariantCulture)};{Value1};{Value2}";
}
}