using System; using System.Collections.Generic; using System.IO; using System.Text; namespace Dfs.WayneChina.FairbanksRTData.Support { public class FileNameSuffixComparer : IComparer { #region Logger NLog.Logger logger = NLog.LogManager.LoadConfiguration("NLog.config").GetLogger("Fairbanks"); #endregion public int Compare(string x1, string y1) { var x = Path.GetFileNameWithoutExtension(x1); var y = Path.GetFileNameWithoutExtension(y1); logger.Debug(string.Format("\tComparing {0} and {1}", x, y)); if (!x.Contains('[') || !y.Contains('[')) { if (x.Length > y.Length) { logger.Debug("\treturn 1"); return 1; } if (x.Length < y.Length) { logger.Debug("\treturn -1"); return -1; } logger.Debug("\treturn 0"); return 0; } int xNumber = GetSuffixNumber(x); int yNumber = GetSuffixNumber(y); if (xNumber > yNumber) return 1; if (xNumber < yNumber) return -1; return 0; } private int GetSuffixNumber(string x) { int xStartIndex = x.IndexOf('['); int xEndIndex = x.IndexOf(']'); int xNumber = Convert.ToInt32(x.Substring(xStartIndex + 1, xEndIndex - xStartIndex - 1)); return xNumber; } } }