我想使用LINQ
访问Special文件夹var s1 = (from folder in new DirectoryInfo(@"C:\Users\" + Environment.UserName + Environment.SpecialFolder.Desktop).GetDirectories()
select folder).ToList();
我正在使用此代码,但无法检索数据
答案 0 :(得分:6)
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);
答案 1 :(得分:1)
要获取Desktop文件夹中的所有文件,包括子文件夹中的所有文件, 我使用这段代码:
string desktopPath = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);
List<FileInfo> s1 = new DirectoryInfo(desktopPath).GetFiles("*.*", SearchOption.AllDirectories).ToList();
这可能有助于你。
答案 2 :(得分:1)
您错过了用户名和桌面之间的反斜杠:
@"C:\Users\" + Environment.UserName + Environment.SpecialFolder.Desktop
但它更容易使用:
Environment.GetFolderPath(Environment.SpecialFolder.Desktop);
这将返回整个路径,而不会对c:\users\
进行硬编码。
答案 3 :(得分:1)
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();
答案 4 :(得分:0)
您需要在\
和Environment.UserName
之间添加反斜杠(Environment.SpecialFolder.Desktop
)。
e.g。
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();