【发布时间】:2016-06-24 08:56:45
【问题描述】:
我有这个功能,您可以将路径传递到包含文件夹名称的目录,例如 UPDATE_20162406_x.x.x(版本)文件将始终具有相同的开头,但日期和版本会有所不同,我需要什么现在是将 UPDATE_someDATE_x.x.x 的路径传递给一个检查是否有任何其他文件夹具有相同版本的函数,这是我需要更改的查询:
public string NewestUpdate(string Directoria)
{
string caminho = "";
Version version = null;
var lastVersion = new DirectoryInfo(Directoria).EnumerateDirectories()
.Where(d => d.Name.ToLower().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)
{
caminho = lastVersion.Directory.FullName.ToString();
Global.LatestVersion = lastVersion.Version.ToString();
}
return caminho;
}
我对 linq 几乎一无所知,而且我无法编写正确的查询来执行此操作。 任何帮助都将不胜感激。谢谢
【问题讨论】:
-
您是否尝试过使用
Directory.GetDirectories(path)方法?这将返回您指定路径中所有目录的string[]。然后您可以执行.Where(x => x.StartsWith("UPDATE_"))来获取这些文件夹的集合:) 参考这里:msdn.microsoft.com/en-us/library/c1sez4sc(v=vs.110).aspx -
您的代码完美获取最新版本。所以 ?您想将版本号传递给此方法并检查是否有另一个具有相同版本的文件夹?
-
@user3185569 我会为此做一个新功能,但确实如此。如果它存在,我只返回 true
-
@LikeIfYouCaredAboutMyName 检查下面的答案