繁体   English   中英

从包含另一个数组的值的数组中返回所有值

[英]Return all values from an array that contains the value from another array

我正在尝试从包含另一个数组的值的数组中返回一个包含所有值的数组。

 string[] files = new string[] 
 {
      "1.mp3", "2.mp3", "1.mp4", "2.txt", "4.wav", "5.ini"
 }

 string[] filters = new string[]
 {
     ".mp3", ".mp4", ".wav"
 }

我想返回仅包含过滤器中文本的值。

我知道如何使用单个参考来获取元素,例如;

 string[] filtered = Array.FindAll(files, c => c.Contains(".mp3");

有没有办法使用包含多个值的方法?

我也试过

files.Intersect(filters).Any(); 

它只是在文件中返回了所有结果。 不知道我做错了什么。

files.Where(file => filters.Any(filter => file.Contains(filter)));

创建一个新的列表,列表优于数组,因为您不需要在创建它之前知道存在多少元素。

然后为一个数组执行一个 foreach 循环,并在其中为另一个数组放入另一个 foreach 循环。

然后添加一个 if 语句来查找匹配的子字符串。 如果匹配,请将其添加到您的列表中。

像这样的东西:

List<string> matches = new List<string>();
 
 foreach(string file in files){
    foreach(string filter in filters){
        if(file.Contains(filter)){
            matches.Add(file);
        }
    }
 }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM