首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >FileInfo -从一个FileInfo[]中选择一个文件

FileInfo -从一个FileInfo[]中选择一个文件
EN

Stack Overflow用户
提问于 2012-04-17 23:06:10
回答 3查看 2.9K关注 0票数 0

我有两个FileInfo[]数组,我想比较具有相同名称的文件的文件大小和上次修改日期。但是,如何从具有特定名称的FileInfo[]中选择文件?

我的代码不能工作,因为我不能使用FileInfo.Select来获取一个新的FileInfo。有什么线索吗?

代码语言:javascript
复制
        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学习材料吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-04-17 23:12:35

您可以使用FirstOrDefault that takes a filter

代码语言:javascript
复制
FileInfo destFile = fiArrNew6.FirstOrDefault(file => file.Name == origFile.Name);

或者,如果您不需要缺省值,可以使用等效的First that takes a filter

代码语言:javascript
复制
FileInfo destFile = fiArrNew6.First(file => file.Name == origFile.Name);
票数 5
EN

Stack Overflow用户

发布于 2012-04-17 23:09:00

destFile不是FileInfo,它是linq查询。将其名称更改为类似于fileQuery的名称,然后

代码语言:javascript
复制
var fileQuery = fiArrNew6.Where(file => file.Name == origFile.Name);
var destFile = fileQuery.FirstOrDefault();
if (destFile != null)
    //...

额外提示:避免使用像fiArrNew6这样的名字;它们很容易混淆。像newFiles这样的描述性名称更容易阅读,它们允许您更改代码,而不必重命名变量。

票数 2
EN

Stack Overflow用户

发布于 2012-04-17 23:09:06

Select更改为Where

代码语言:javascript
复制
FileInfo destFile = fiArrNew6.Where(file => file.Name == origFile.Name).First();

Where将返回一个IEnumerable<FileInfo>,将First与一起使用将确保使用第一个这样的事件(如果没有,它将抛出异常)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10193831

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档