簡體   English   中英

C#如何遍歷列表字符串並比較值

[英]C# How can I loop through a list string and compare values

我是C#的新手,有一個項目,我有一個List String,必須過濾掉某些具有某些擴展名的圖像。 這是我的代碼

// App Config
<add key="FilterImages" value=".jpg ,.gif"/>

List<string> _FilterList = new List<string>();
string[] FilterList = ConfigurationManager.AppSettings["FilterImages"].ToString().Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
foreach (string s in FilterList)
{
    _FilterList.Add(s.Trim().ToLower());
}

var files = newFiles.ListDirectory(".");
foreach (var f in files)
{
    // Here new files come and I can get the file names using
    // f.name ... How can I check for correct extension here   
}

在ForEach循環中,我想使用_FilterList並檢查傳入的新文件的文件擴展名。 我可以使用f.Name獲取文件名,任何建議都很好

嘗試這樣的事情,只需在FilterList查找文件擴展名。 這可能不會編譯,但是會提示如何查找有效的文件擴展名。

foreach (var f in files)
{
    if(_FilterList.Contains(Path.GetExtension(f.FileName))
    {
       //Do your stuff
    }
}

或者您可以使用Linq

 var allowedFiles =  files.Where(p => _FilterList.Any(l => p.Contains(l)).ToList();

首先,讓我們獲取要過濾掉的擴展; HashSet<string>似乎是一個更好的集合

HashSet<string> extensions = new HashSet<string>(ConfigurationManager
    .AppSettings["FilterImages"].ToString()
    .Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries)
    .Select(item => item.Trim()), 
  StringComparer.OrdinalIgnoreCase); // ".GIF" should be treated as ".gif"

然后我們可以開始檢查files

var files = newFiles.ListDirectory(".");

foreach (var f in files) {
  // if "f" is FileInfo we can use f.FullName
  // if "f" is string then put just f, not f.FullName 
  if (extensions.Contains(Path.GetExtension(f.FullName))) {
    // file has a correct extension 
  } 
}

首先,您可以使用LinQ將代碼分解為:

var _FilterList = ConfigurationManager.AppSettings["FilterImages"].ToString()
     .Split(',')
     .Select(p => p.Trim().ToLower())
     .ToList();

var files = newFiles.ListDirectory(".");

並獲得過濾文件路徑:

var acceptedFiles = files.Where(p => _FilterList.Any(l => p.Contains(l)).ToList();
var unAcceptedFiles = files.Where(p => !_FilterList.Any(l => p.Contains(l)).ToList();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM