5

次のコードがあります。「if ステートメント」で、FileInfo に「Contains」という定義が含まれていないというエラーが表示されます。

ファイルがディレクトリにあるかどうかを調べるための最適なソリューションはどれですか?

ありがとう

string filePath = @"C:\Users\";
DirectoryInfo folderRoot = new DirectoryInfo(filePath);
FileInfo[] fileList = folderRoot.GetFiles();

IEnumerable<FileInfo> result = from file in fileList where file.Name == "test.txt" select file;
if (fileList.Contains(result))
{
      //dosomething
}
4

3 に答える 3

17

削除fileList.Contains(result)して使用:

if (result.Any())
{

}

.Any()result にアイテムが含まれているかどうかを判断するための LINQ キーワードです。を実行するようなものですが.Count() > 0より速くなります。では.Any()、要素が見つかるとすぐに、シーケンスは列挙されなくなり、結果は になりTrueます。

実際、コードの最後の 5 行を下から削除して、次のようfrom file in...に置き換えることができます。

if (fileList.Any(x => x.Name == "test.txt"))
{

}
于 2012-06-13T14:42:16.797 に答える
3

結果のカウントを確認できます

 if (result.Count() > 0)
 {
    //dosomething
 }
于 2012-06-13T14:44:59.357 に答える
0

これはどうですか、以下のコードはファイルのリスト(文字列としてのフルネーム)を提供します。リストとして返される理由は、サブディレクトリのファイル名が「test.txt」と同じである可能性があるためです。

var list = Directory.EnumerateFiles(@"c:\temp\", "test.txt",
           SearchOption.AllDirectories);

'test.txt'ファイルがディレクトリの1つにのみ存在することが確実な場合は、次を使用できます。

string fullname = Directory.EnumerateFiles(@"c:\temp\", "test.txt",
                  SearchOption.AllDirectories).FirstOrDefault();
if (fullname != null) { ..... }
于 2013-03-22T02:51:12.350 に答える