从 FileInfo 中获取前 x 项
Get first x items from FileInfo
我在 C# 中有一个 FileInfo
,如下所示:
DirectoryInfo dir = new DirectoryInfo(folder);
FileInfo[] files = dir.GetFiles("Car*", SearchOption.TopDirectoryOnly);
我希望能够 select files
中文件的第一个 x
项,比方说 30
,然后从 [=14] 中删除其余的=].我该怎么做而不只是从 0
循环到 29
?
不使用 GetFiles
,而是使用 EnumerateFiles
plus Take
和 ToArray
:
DirectoryInfo dir = new DirectoryInfo(folder);
FileInfo[] files = dir.EnumerateFiles("Car*", SearchOption.TopDirectoryOnly).Take(30).ToArray();
这将创建一个数组,最多包含目录中找到的前三十个项目。这样做的好处是,在非常大的目录中,它最多只有 return 三十个项目 。 GetFiles
将 return 目录 中的每个文件首先 如果有很多文件,这可能需要一些时间。 EnumerateFiles
另一方面,return 是一个 IEnumerable<FileInfo>
,它允许您 "stream" 结果并应用 LINQ 运算符 before 将它们收集到数组或列表。
注意:您需要确保文件顶部有适当的 using
指令:
using System.Linq;
我在 C# 中有一个 FileInfo
,如下所示:
DirectoryInfo dir = new DirectoryInfo(folder);
FileInfo[] files = dir.GetFiles("Car*", SearchOption.TopDirectoryOnly);
我希望能够 select files
中文件的第一个 x
项,比方说 30
,然后从 [=14] 中删除其余的=].我该怎么做而不只是从 0
循环到 29
?
不使用 GetFiles
,而是使用 EnumerateFiles
plus Take
和 ToArray
:
DirectoryInfo dir = new DirectoryInfo(folder);
FileInfo[] files = dir.EnumerateFiles("Car*", SearchOption.TopDirectoryOnly).Take(30).ToArray();
这将创建一个数组,最多包含目录中找到的前三十个项目。这样做的好处是,在非常大的目录中,它最多只有 return 三十个项目 。 GetFiles
将 return 目录 中的每个文件首先 如果有很多文件,这可能需要一些时间。 EnumerateFiles
另一方面,return 是一个 IEnumerable<FileInfo>
,它允许您 "stream" 结果并应用 LINQ 运算符 before 将它们收集到数组或列表。
注意:您需要确保文件顶部有适当的 using
指令:
using System.Linq;