文件信息 - 从一个文件信息[] 中选择一个文件
本文关键字:文件 一个 信息 选择 | 更新日期: 2023-09-27 18:31:20
我有两个FileInfo[]数组,我想比较具有相同名称的文件,了解其文件大小和上次修改日期。但是,如何从具有特定名称的 FileInfo[] 中选择文件呢?
我的代码不起作用,因为我无法使用 FileInfo.Select 来获取新的 FileInfo 。有什么线索吗?
foreach (FileInfo origFile in fiArrOri6)
{
FileInfo destFile = fiArrNew6.Select(file => file.Name == origFile.Name);
if (origFile.Length != destFile.Length || origFile.LastWriteTime != destFile.LastWriteTime)
{
//do sth.
}
}
感谢您的任何帮助:)
顺便说一句。这个问题的任何其他迷人的解决方案都会很棒。顺便说一句。#2 : 有人有很好的FileInfo学习材料吗?
您可以使用采用过滤器的 FirstOrDefault
FileInfo destFile = fiArrNew6.FirstOrDefault(file => file.Name == origFile.Name);
或者,如果您不想要默认值,则可以使用采用筛选器的等效 First
FileInfo destFile = fiArrNew6.First(file => file.Name == origFile.Name);
destFile
不是FileInfo,它是一个linq查询。 将其名称更改为类似 fileQuery
的名称,然后
var fileQuery = fiArrNew6.Where(file => file.Name == origFile.Name);
var destFile = fileQuery.FirstOrDefault();
if (destFile != null)
//...
额外提示:避免使用像fiArrNew6
这样的名称;它们令人困惑。 像newFiles
这样的描述性名称更易于阅读,并且它们允许您更改代码而无需重命名变量。
将Select
更改为Where
:
FileInfo destFile = fiArrNew6.Where(file => file.Name == origFile.Name).First();
Where
将返回一个IEnumerable<FileInfo>
,使用 First
将确保使用第一个这样的事件(如果没有,它将抛出异常)。