从C#中的txt文件查询特定行

Fre*_*rdy 4 .net c# linq

我有以下文本文件:http: //pastebin.com/K45Ew5CU

我想做一个特定的查询,从特定的一分钟开始,然后将它们放在一个数据网格中,该数据网格有一个对象(String TimeStamp,String ComputerName,String ID,String Event)作为其数据字段.

例如:假设我想显示从10:10:00到当前时间的所有行.

如何测试每一行以确定它是否符合我的时间要求?

Fᴀʀ*_*ɴᴀᴍ 6

用这个:

var queryResult = File.ReadAllLines("<yourFile.txt>").Skip(1).TakeWhile(x => (DateTime.Parse(x.Substring(0, 19), CultureInfo.InvariantCulture).TimeOfDay.TotalSeconds) > (new TimeSpan(10, 10, 0).TotalSeconds)).ToArray();
Run Code Online (Sandbox Code Playgroud)

现在您可以queryResult在数据表中使用它.如果您需要进一步的帮助,请发表评论.

一个更好的版本,使用匿名类型:

var queryResult = File.ReadAllLines("<yourFile.txt>")
                      .Skip(1)
                      .TakeWhile(x => (DateTime.Parse(x.Substring(0, 19), CultureInfo.InvariantCulture).TimeOfDay.TotalSeconds) > (new TimeSpan(10, 10, 0).TotalSeconds))
                      .Select(x => new { TimeStamp = DateTime.Parse(x.Substring(0, 19), CultureInfo.InvariantCulture), CoumputerName = x.Substring(21, 10), ID = x.Substring(45, 4), Event = x.Substring(59)})
                      .ToArray();
Run Code Online (Sandbox Code Playgroud)

现在,您可以从中访问个人数据queryResult.

  • 我建议使用[File.ReadLines](https://msdn.microsoft.com/en-us/library/system.io.file.readlines(v = vs.110).aspx)来避免将所有内容都读到内存中立刻.那么你也不需要`Split` (2认同)