gpt4 book ai didi

c# - 按字符串排序列表以查找较新版本 C#

转载 作者:太空宇宙 更新时间:2023-11-03 18:25:00 25 4
gpt4 key购买 nike

我有一个包含多个目录的文件夹,这些目录以某个更新版本命名,例如 UPDATE_20080311_3.5.9。我需要通过查看“3.5.9”来找到该列表的最新更新,我编写了一个代码来解析名称并将版本添加到列表中。无论如何使用 List.Sort 对列表进行排序以获得最新版本的“编号”?这是我到目前为止所做的代码,我不知道如何正确使用 .Sort() 方法以及是否可以这样做。感谢您提供的任何帮助

public string NewerVersion(string Directoria)
{
List<string> Lista = new List<string>();
DirectoryInfo dir = new DirectoryInfo(Directoria);
DirectoryInfo[] dirs = dir.GetDirectories();
foreach (DirectoryInfo Info in dirs)
{
string Dir = Info.Name.ToString();
Lista.Add(Dir.Substring(Dir.LastIndexOf('_'), Dir.Length));

}
Lista.Sort()
//Lista.ToArray();
}

最佳答案

您可以使用 Version它实现了 IComparable,所以它支持排序。

例如这个 LINQ 查询:

Version version = null;
Version lastVersion = new DirectoryInfo(Directoria).EnumerateDirectories()
.Where(d => d.Name.StartsWith("UPDATE_"))
.Select(d => new {Directory = d, Token = d.Name.Split('_')})
.Where(x => x.Token.Length == 3 && Version.TryParse(x.Token[2], out version))
.Select(x => new {x.Directory, Date = x.Token[1], Version = version})
.OrderByDescending(x => x.Version)
.Select(x => x.Version)
.FirstOrDefault();
string latestVersion = lastVersion.ToString(); // if you want it as string

After I find the newer version I need to be able to return the name of the directory

然后使用这个查询:

var lastVersion = new DirectoryInfo(Directoria).EnumerateDirectories()
.Where(d => d.Name.StartsWith("UPDATE_"))
.Select(d => new {Directory = d, Token = d.Name.Split('_')})
.Where(x => x.Token.Length == 3 && Version.TryParse(x.Token[2], out version))
.Select(x => new {x.Directory, Date = x.Token[1], Version = version})
.OrderByDescending(x => x.Version)
.FirstOrDefault();
if (lastVersion != null)
Console.WriteLine(lastVersion.Directory.FullName);

关于c# - 按字符串排序列表以查找较新版本 C#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36577121/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com