ในฐานะที่เป็นคำตอบเพิ่มเติม (หรือเพื่อประกอบกับคำตอบที่มีอยู่) คุณสามารถเขียนวิธีการขยายเพื่อบรรลุสิ่งนี้ให้คุณภายในคลาส DirectoryInfo นี่คือตัวอย่างที่ฉันเขียนอย่างรวดเร็วพอสมควรซึ่งสามารถนำมาประดับให้ชื่อไดเรกทอรีหรือเกณฑ์อื่น ๆ สำหรับการแก้ไข ฯลฯ :
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
namespace DocumentDistributor.Library
{
public static class myExtensions
{
public static string[] GetFileNamesWithoutFileExtensions(this DirectoryInfo di)
{
FileInfo[] fi = di.GetFiles();
List<string> returnValue = new List<string>();
for (int i = 0; i < fi.Length; i++)
{
returnValue.Add(Path.GetFileNameWithoutExtension(fi[i].FullName));
}
return returnValue.ToArray<string>();
}
}
}
แก้ไข:ฉันคิดว่าวิธีนี้อาจจะง่ายหรือน่ากลัวถ้ามันใช้ LINQ เพื่อสร้างอาร์เรย์ แต่ฉันไม่ได้มีประสบการณ์ใน LINQ ที่จะทำมันเร็วพอสำหรับตัวอย่างประเภทนี้
แก้ไข 2 (เกือบ 4 ปีต่อมา):นี่คือวิธี LINQ-ified ที่ฉันจะใช้:
public static class myExtensions
{
public static IEnumerable<string> GetFileNamesWithoutExtensions(this DirectoryInfo di)
{
return di.GetFiles()
.Select(x => Path.GetFileNameWithoutExtension(x.FullName));
}
}