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
検索しているパスのディレクトリと等しいためです。