我想使用 LINQ 访问特殊文件夹
var s1 = (from folder in new DirectoryInfo(@"C:\Users\" + Environment.UserName + Environment.SpecialFolder.Desktop).GetDirectories()
select folder).ToList();
我正在使用此代码,但无法检索数据
Path
类创建路径,例如Path.Combine(part1, part2, ...)
DirectoryInfo
该类,使用静态Directory
或File
类似的方法Directory.GetDirectories
Environment.GetFolderPath(Environment.SpecialFolder.Desktop);
你根本不需要 Linq:
string path = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);
string[] directories = Directory.GetDirectories(path, "*.*", SearchOption.AllDirectories);
要获取 Desktop 文件夹中的所有文件,包括子文件夹中的任何文件,我将使用以下代码:
string desktopPath = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);
List<FileInfo> s1 = new DirectoryInfo(desktopPath).GetFiles("*.*", SearchOption.AllDirectories).ToList();
这可能对你有帮助。
您在用户名和桌面之间缺少反斜杠:
@"C:\Users\" + Environment.UserName + Environment.SpecialFolder.Desktop
但它更容易使用:
Environment.GetFolderPath(Environment.SpecialFolder.Desktop);
这将返回整个路径,无需硬编码c:\users\
。
Path.Combine
。Environment.SpecialFolder.Desktop
不是字符串,所以必须将其转换为字符串。所以试试这个:
var desktop = System.IO.Path.Combine(@"C:\Users\", Environment.UserName, Environment.SpecialFolder.Desktop.ToString());
var result = (from folder in new DirectoryInfo(desktop).GetDirectories()
select folder).ToList();
您需要在和\
之间添加反斜杠 ( ) 。Environment.UserName
Environment.SpecialFolder.Desktop
例如
var desktopFolder = string.Format(
@"C:\Users\{0}\{1}",
Environment.UserName,
Environment.SpecialFolder.Desktop);
var s1 = (from folder in new DirectoryInfo(desktopFolder).GetDirectories()
select folder).ToList();