會用這個是MAUI的其中一個範例,
目標是對某個資料夾內的*.note.txt作讀取檔名的動作,因為存檔後,要有取檔的動作,而Windows系統的習惯是開類似檔案總管的模式,自行選擇要開啟的檔案。也有些程式會以固定的副檔名作為標的,先讀取後,再列清單給使用者取用,而這個範例就是後者。
但不得不說說,這個語法簡化到令人不易理解的程度。這個先用了類似TList的IEnumerable結構,又使用的C# 專用的=>Lambda運算子,不太容易理解為何這麼寫,就可以達到
// Get the folder where the notes are stored. string appDataPath = FileSystem.AppDataDirectory; // Use Linq extensions to load the *.notes.txt files. IEnumerable<note> notes = Directory // Select the file names from the directory .EnumerateFiles(appDataPath, "*.notes.txt") // Each file name is used to create a new Note .Select(filename => new Note() { Filename = filename, Text = File.ReadAllText(filename), Date = File.GetLastWriteTime(filename) }) // With the final collection of notes, order them by date .OrderBy(note => note.Date); // Add each note into the ObservableCollection foreach (Note note in notes) Notes.Add(note);
想把它改寫成比較容易理解的模式,畢竟還是要讓未來的自己看得懂這段在寫什麼,然後知道如何改成新的需求。