Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/282.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何检查一个字符串是否包含在另一个字符串列表中?_C# - Fatal编程技术网

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

C# 如何检查一个字符串是否包含在另一个字符串列表中?,c#,C#,我有一个文件夹列表,其中包含要处理的语言列表: eng_US spa_ES 等等 我有一个目录列表,其中包含每种语言的子文件夹。它们可以比“我的语言”列表中定义的多。它可以是这样的: ja-JP eng_US spa_Es fr_FR string[] directories = Directory.GetDirectories(path); 我列出了该特定文件夹中的目录,如下所示: ja-JP eng_US spa_Es fr_FR string[] directories = Dir

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

eng_US
spa_ES
等等

我有一个目录列表,其中包含每种语言的子文件夹。它们可以比“我的语言”列表中定义的多。它可以是这样的:

ja-JP
eng_US
spa_Es
fr_FR
string[] directories = Directory.GetDirectories(path);
我列出了该特定文件夹中的目录,如下所示:

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;
i词典语言;

您已经非常接近了-请记住
languageList
是您关心的名称列表,您的Linq语句将一次返回一个字符串值,以通过
Where
子句,因此您希望它如下所示:

string[] directories = Directory.GetDirectories(path).Where(x => languageList.Contains(x)).ToArray();
基本上是说
返回并返回包含在languageList中的值


希望这是有意义的。

您需要比较目录名而不是完整路径。此外,您还需要检查目录路径是否包含从语言列表中获取的值

string[] directories = Directory.GetDirectories(path)
                                .Where(d => languageList.Contains(Path.GetFileName(d)))
                                .ToArray();

请注意,您必须使用
Path.GetFileName
,因为这将从“C:\folder\endfolder”返回“endfolder”。而
Path.GetDirectoryName
将返回“C:\folder”。

“但显然是错误的”-你为什么这么认为?因为它不起作用,而且格式不好。它甚至无法编译。我尝试使用Lynq的逻辑,但不起作用…它的可能副本看起来是这样的,但不知道如何应用它…如果你想检查(得到布尔结果),我正在使用.Net 4.5,下面有一个很好的答案。但是,如果你想得到两个字符串列表的交集,你应该准确地使用:不要落入他的陷阱…
其中(…)
不返回
string[]
类型别担心!那太好了!我返回了一个列表:DGlad它给了你所需要的!