DirectoryInfo GetFiles TOP编号

Beg*_*ner 8 .net c# fileinfo

我想只从目录返回10个文件.这可能吗?

DirectoryInfo d = new DirectoryInfo(HttpContext.Current.Server.MapPath("~/xml"));

FileInfo[] files = d.GetFiles("*.xml");
Run Code Online (Sandbox Code Playgroud)

这种方式返回所有 XML文件,但我想得到前十个.

Jak*_*son 11

您可以添加扩展方法Take(10)以仅获取前10个文件.

var d = new DirectoryInfo(HttpContext.Current.Server.MapPath("~/xml"));
var files = d.GetFiles("*.xml").OrderByDescending(fi=>fi.LastWriteTime).Take(10);
Run Code Online (Sandbox Code Playgroud)


Luk*_*keH 10

如果你使用.NET4那么你或许应该使用EnumerateFiles,随之一起Take扩展方法:

var d = new DirectoryInfo(HttpContext.Current.Server.MapPath("~/xml"));
FileInfo[] files = d.EnumerateFiles("*.xml").Take(10).ToArray();
Run Code Online (Sandbox Code Playgroud)

  • 这是正确的解决方案.Jake Pearson目前标记为正确的解决方案使用GetFiles,它返回一个数组类型,这意味着在应用LINQ语句Take之前,所有文件都将实现.使用EnumerateFiles返回一个IEnumerable,它只会走Take由Take ...应用的文件数量.如果你不看返回类型并注意它们的行为,那么LINQ可能会非常危险:) (2认同)