0

このコードがあると想像してください

public List<string> X

そして、次のアイテムをロードします。

launch.txt
reset.txt フォルダー

otherfoldername

X.Contains("value") を呼び出すことで項目がそのリストにあるかどうかを確認できることはわかっていますが、"foldername
/file.txt" を渡すとどうなるでしょうか。

文字列が X リストのエントリのいずれかで始まるかどうかを確認する最も簡単な方法は何ですか? 理想的には、「foldername/ . 」およびサブディレクトリ内にあるすべてのファイルもキャッチしたいので、StartWith.

LINQ はこれに対する正しいアプローチですか?

4

2 に答える 2

0

Pathパスをいじっている場合は、クラスを使用します。

List<string> X = new List<string>(){
    "launch.txt","reset.txt","foldername","otherfoldername"    
};
string search = "foldername/file.tx";
var searchInfo = new
{
    FileNameWoe = Path.GetFileNameWithoutExtension(search),
    FileName = Path.GetFileName(search),
    Directory = Path.GetDirectoryName(search)
};

IEnumerable<String> matches = X.Select(x => new
{
    str = x,
    FileNameWoe = Path.GetFileNameWithoutExtension(x),
    FileName = Path.GetFileName(x),
    Directory = Path.GetDirectoryName(x)
}).Where(xInfo => searchInfo.FileName    == xInfo.FileNameWoe
               || searchInfo.FileNameWoe == xInfo.FileName
               || searchInfo.Directory   == xInfo.Directory
               || searchInfo.Directory   == xInfo.FileNameWoe
               || searchInfo.FileNameWoe == xInfo.Directory)
.Select(xInfo => xInfo.str)
.ToList();

検索結果:foldernameファイル名の 1 つが、FileNameWithoutExtension検索しているパスのディレクトリと等しいためです。

于 2013-07-10T22:04:22.663 に答える