C# 模擬windows文件名稱排序(使用windows自帶dll)

        [DllImport("shlwapi.dll", CharSet = CharSet.Unicode)]
        private static extern int StrCmpLogicalW(string psz1, string psz2);
        /// <summary>
        /// 根據路徑查到文件,按文件名稱排序,智能排序,非ASCII碼排序
        /// </summary>
        /// <param name="pathToVersions"></param>
        /// <returns></returns>
        private static string[] GetFileListByPath(string pathToVersions)
        {
            var files = new DirectoryInfo(pathToVersions).GetFiles();
            var list = files.ToList();
            //根據修改時間排序,由於複製會改變建立時間,不會改變修改時間
            //list.Sort((a, b) => b.LastWriteTime.CompareTo(a.LastWriteTime));
            //list.Sort((a, b) => b.FullName.CompareTo(a.FullName));
            //list = files.OrderBy(s => int.Parse(Regex.Match(Regex.Match(s.Name, @"\d+\.7z").Value,@"\d+").Value)).ToList();
            //按windows的名稱排序,abc_1.0.12.zip、abc_1.0.2.zip、abc_1.0.1.zip
            list.Sort((a, b) => StrCmpLogicalW(b.Name,a.Name));
            return list.Select(d => d.FullName.Replace(pathToVersions + @"\", "")).ToArray();
        }
按windows的文件名稱排序,abc_1.0.12.zip、abc_1.0.2.zip、abc_1.0.1.zip,非ASCII碼排序。能夠調整入參的順序,實現正序和倒序。例子中爲倒序。
相關文章
相關標籤/搜索