この機能を使用すると、フォルダ名を含むディレクトリにパスを渡すことができます。たとえば、UPDATE_20162406_x.xx(バージョン)のように、ファイルは常に同じようになりますが、日付とバージョンが異なる、私が今必要なのは、UPDATE_someDATE_x.xxへのパスを、同じバージョンの他のフォルダがあるかどうかをチェックする関数に渡すことです。これは、変更が必要なクエリです。Linqを使用して同じ名前のフォルダを見つけるc#
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をほとんど知らず、Imはこれを行うための適切なクエリを書くことができません。 ヘルプは評価されています。あなたにこれは動作するはず
あなたは 'Directory.GetDirectories(パス)'メソッドを使用してみましたか?これは、指定されたパスのすべてのディレクトリの 'string []'を返します。これらのフォルダのコレクションを取得するには、 '.Where(x => x.StartsWith(" UPDATE _ "))'を実行することができます:) https://msdn.microsoft.com/en-us/library /c1sez4sc(v=vs.110).aspx –
あなたのコードは最新バージョンを完全に取得します。そう ?このメソッドにバージョン番号を渡して、同じバージョンの別のフォルダがあるかどうかを確認しますか? – user3185569
@ user3185569私はそのために新しい機能を実行しますが、それはまさにそれです。それが存在する場合、私はちょうど真実を返す – LikeIfYouCaredAboutMyName