簡體   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