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它给了你所需要的!