gpt4 book ai didi

c# - 如何使用 LINQ 从目录中过滤文件?

转载 作者:行者123 更新时间:2023-11-30 19:19:44 26 4
gpt4 key购买 nike

在我的 C# 程序中,我使用 LINQ 从目录中获取所有文件以进行如下处理

var FilesToProcess = from filePath in Directory.GetFiles(sDirectory)
where File.GetCreationTime(filePath).BusinessDaysUntil(DateTime.Today)
select filePath;
if (FilesToProcess.Any())
{
List<string> process = (from string s in FilesToProcess
where ((s.EndsWith(".ext")) || (s.EndsWith(".xml")))
select s).ToList();
}

但在我的例子中,我有同名的 xml 和 txt 文件,例如 A.xml 和 A.txt,类似 B.xml 和 B.txt,其他文件也一样。

我想使用 LINQ 来获取同名的两个文件进行如下处理

Processfile(string xmlfile, string txtfile)

根据我上面的代码,我正在从目录中获取所有文件(xml、txt),但我不知道如何继续。

请帮忙过滤同名不同扩展名的文件?

最佳答案

您可以使用 Linq GroupBy method这样做,例如:

DirectoryInfo directory = new DirectoryInfo(sDirectory);
var filePairs = directory
.GetFiles("*.xml")
.Union(directory.GetFiles("*.txt"))
.GroupBy(file => file.Name);

或者,如果您只想成对获取文件:

var filePairs = directory
.GetFiles("*.xml")
.Union(directory.GetFiles("*.txt"))
.GroupBy(file => file.Name)
.Select(grp => new
{
XmlFile = grp.FirstOrDefault(file => file.Extension == "xml"),
TxtFile = grp.FirstOrDefault(file => file.Extension == "txt")
})
.Where(pair => pair.XmlFile != null && pair.TxtFile!= null);

关于c# - 如何使用 LINQ 从目录中过滤文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8322901/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com