簡體   English   中英

在 C# 中的字符串列表中使用什么代替 Concat

[英]What to use instead of Concat in string lists in C#

我有這些字符串列表

List<string> files = new List<string>
                    (System.Linq.Enumerable.Concat
                    (System.IO.Directory.GetFiles(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments), "*.*"),
                    System.IO.Directory.GetFiles(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments), "*.pdf")));

我想重構代碼,我想使用比 concat 更高效或更快的東西。我該怎么做? 謝謝

要獲取所有文件的List<string> ,您可以編寫:

using System.IO;
using System.Linq;

string path = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
var files = Directory.GetFiles(path, "*.*").ToList();

這將包括所有 PDF。

如果出於特殊目的不需要List<> ,則可以直接操作 GetFiles 的結果字符串數組:

string[] files = Directory.GetFiles(path, "*.*");

或者干脆:

var files = Directory.GetFiles(path, "*.*");

這將避免轉換為通用字符串列表所需的內存和時間。

您可以使用數組或列表訪問項目和循環 foreach,因為它們實現了 IEnumerable 並具有索引器。

列表僅在您需要輕松操作項目(例如添加和刪除)或出於任何原因需要 OOP 對象時才有用。

同樣按照@mjwills 的建議,您可以使用EnumerateFiles而不是GetFiles :第一次解析列表時,您無需等待完全填充,並且在大量文件的情況下最終不會出現延遲:

var files = Directory.EnumerateFiles(path, "*.*");

foreach (var filePath in files) ...

但是每次執行解析時它都會重新掃描系統文件,這僅在進行一次解析或需要實時解析時才有用。

暫無
暫無

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

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