/// 日志类型 private LogExInfo getLogInfo(string log, int index) { var blankIndex = log.IndexOf(' '); var logExInfo = new LogExInfo(); logExInfo.Key = log.Substring(0, blankIndex); logExInfo.Content = log.Substring(blankIndex + 1, log.Length - blankIndex - 1); if (char.IsDigit(log[blankIndex + 1])) { logExInfo.Type = LogType.DIGIS; } else { logExInfo.Type = LogType.LETTERS; } logExInfo.RawIndex = index; logExInfo.RawLog = log; return(logExInfo); }
public string[] ReorderLogFiles(string[] logs) { LogExInfo[] logExInfos = new LogExInfo[logs.Length]; for (int i = 0; i < logs.Length; i++) { logExInfos[i] = getLogInfo(logs[i], i); } Array.Sort(logExInfos, (a, b) => { if (a.Type != b.Type) { return(a.Type.CompareTo(b.Type)); } if (a.Type == LogType.LETTERS) { if (a.Content != b.Content) { return(a.Content.CompareTo(b.Content)); } else { return(a.Key.CompareTo(b.Key)); } } else { return(a.RawIndex.CompareTo(b.RawIndex)); } }); for (int i = 0; i < logs.Length; i++) { logs[i] = logExInfos[i].RawLog; } return(logs); }