我有一个文件夹列表,其中包含我想要处理的语言列表:
eng_US
spa_ES
等...
我有一个目录列表,其中包含每种语言的子文件夹。它们可能比我的语言列表中定义的更多。它看起来像这样:
ja-JP
eng_US
spa_Es
fr_FR
我列出了该特定文件夹中的目录,如下所示:
string[] directories = Directory.GetDirectories(path);
我希望 Linq 使用我的私人语言列表中的所有文件夹。
我尝试了类似的东西:
string[] directories = Directory.GetDirectories(path).Where(x => x.Contains(languageList.Value));
但是,显然很糟糕:(
如何只获取我的私人语言列表中列出的文件夹?
那么,如何检查我的结果路径是否包含在Linq的另一个字符串列表中?
谢谢!
注意: 我的语言列表保存在词典。
中IDictionary<int, string> languages;
答案 0 :(得分:1)
您非常接近 - 请记住languageList
是您关注的名称列表,您的Linq语句将一次返回一个字符串值以通过您的Where
条款,因此您和#39; d希望它看起来如下:
string[] directories = Directory.GetDirectories(path).Where(x => languageList.Contains(x)).ToArray();
基本上说Give me back and returned value that is contained in languageList
希望这是有道理的。
答案 1 :(得分:0)
您需要比较目录名称而不是完整路径。您还要检查目录路径是否包含从语言列表中获取的值。
string[] directories = Directory.GetDirectories(path)
.Where(d => languageList.Contains(Path.GetFileName(d)))
.ToArray();
请注意,您必须使用Path.GetFileName
,因为这将从'C:\ folder \ endfolder'返回'endfolder'。而Path.GetDirectoryName
将返回'C:\ folder'。