1

DirectoryInfo[]コードが下にあるディレクトリが含まれているかどうかを確認するためにテストを実行しています

DirectoryInfo[] test = dir.GetDirectories();
if(test.Contains(new DirectoryInfo(dir.FullName +"\\"+ "Test_Folder")))
{
    ContainsTestFolder = true;
}

私にはこれはうまくいくはずですが、そうすべきときにtrueを返さないようです。私が間違っていることへのアイデア。

4

5 に答える 5

3

すべてのプロパティが等しくない2つの複雑なオブジェクトを比較しようとしましたが、それらのFullNameプロパティを比較することをお勧めします。

述語の使用FirstOrDefaultを優先し、ディレクトリのフルネームを比較します

FirstOrDefaultnull見つかった場合と見つからなかった場合はオブジェクトを返します

DirectoryInfo[] test = dir.GetDirectories();
if (test.FirstOrDefault(x => x.FullName.Equals(Path.Combine(dir.FullName,"Test_Folder"))) != null)
{
   ContainsTestFolder = true;
}

Anyを返す述語も使用できますbool

DirectoryInfo[] test = dir.GetDirectories();
if (test.Any(x => x.FullName.Equals(Path.Combine(dir.FullName,"Test_Folder"))))
{
    ContainsTestFolder = true;
}
于 2012-10-18T10:18:25.200 に答える
2

Enumerable.Anyを使用

DirectoryInfo[] test = dir.GetDirectories();
if (test.Any(r => r.FullName.Equals(Path.Combine(dir.FullName,"Test_Folder"))))
{
   ContainsTestFolder = true;
}

目的の結果が得られない理由は、その値ではなく、比較オブジェクト参照が含まれているためです。また、パスを連結する代わりにPath.Combineを使用することも検討してください。

于 2012-10-18T10:19:39.850 に答える
2

同じプロパティを持つ 2 つの異なるオブジェクトが等しいかどうかをチェックしているため、この方法でテストすることはできません。

試す

DirectoryInfo[] test = dir.GetDirectories();
if (test.Any(x => x.FullName.Equals(dir.FullName +"\\"+ "Test_Folder")))
{
   ContainsTestFolder = true;
}
于 2012-10-18T10:20:06.110 に答える
1

ディレクトリのステータスを確認します(サブディレクトリが含まれている場合)

if(test.length >0) { // Do you coding here }enter code here
于 2013-03-09T02:53:27.710 に答える