我必须使用以下格式包含日志文件:
测试场景通过:名称:Scenario_48_12 / 19/2016 1:30:42 AM,测试结果:True
我需要这样的数据1:30,真实的一天::
var result = new List<KeyValuePair<DateTime, string>>();
var commaSeperatedTimeStamp = string.Empty;
foreach (string file in System.IO.Directory.GetFiles(logsPath, "ApplicationLogs*", System.IO.SearchOption.AllDirectories))
{
var perLineText = File.ReadAllText(file).Split('\n');
foreach (var item in perLineText)
{
if (item.Contains("Scenario"))
{
var timeStamp = DateTime.ParseExact(item.Split(',')[0].Split('/').Last().Substring(4).Trim(), "h:mm:ss tt", CultureInfo.InvariantCulture);
result.Add(new KeyValuePair<DateTime, string>(timeStamp,
item.ToLower().Contains("true")
? "true"
: "false"));
}
}
}
result.OrderBy(x => x.Key.TimeOfDay);
return result;
结果变量未排序。
此代码存在多个问题
1:日志文件的时间格式为hh:mm:ss但是当我将其转换为DateTime时,它会将当前日期值添加到其中。我不想要的。
请建议。
答案 0 :(得分:0)
OrderBy返回类型IOrderedEnumarable,因此您需要将其转换为列表
this.$timeout(function () {
let image_id = '#image_id';
let height = $(image_id).height();
console.log(height);
},0);
仅在行文本中计算数据 正则表达式测试链接:http://rubular.com/r/0pYoiOCvto
result = result.OrderBy(x => x.Key.TimeOfDay).ToList();
答案 1 :(得分:0)
在您尝试使用子字符串4的代码中实际存在,因此您将在凌晨1:30:42获得,因此您获取当前日期时间与我们添加的时间一样。
将您的代码更改为:
//这将给出日志中给出的实际日期时间,然后按
进行排序 var actual = perLineText.Split(',')[0].Split('_').Last().ToString();
var timeStamp = DateTime.ParseExact(actual, "MM/dd/yyyy h:mm:ss tt", CultureInfo.InvariantCulture);
//reassign result
result = result.OrderBy(x => x.Key.TimeOfDay);
return result;
我做了命令,我得到了结果。
另请注意,即使日期不同,您的订单也会按时间排序。如果你希望按日期和时间正确地排序列表,你应该通过key itslef命令。
答案 2 :(得分:0)
我使用排序代替OrderBy
result.Sort((a, b) => a.Key.CompareTo(b.Key));
确切的原因我还在试图找出来,也会发布。