如何检查字符串是否包含在另一个字符串列表中?

时间:2016-06-13 14:36:54

标签: c#

我有一个文件夹列表,其中包含我想要处理的语言列表:

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;

2 个答案:

答案 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'。