我想使用LINQ从ZipArchive
中选择一个文件作为ZipArchiveEntry
。如何使用LINQ从ZipArchive中获取第一个匹配的文件?
我有什么到目前为止
string filename = "foo";
using (FileStream zipFile = new FileStream(Path.Combine(FilePathLocal, filename + ".zip"), FileMode.Open)) {
using (ZipArchive archive = new ZipArchive(zipFile, ZipArchiveMode.Read)) {
var txtInZip = archive.Entries.Select(x => x.FullName == filename + ".txt");
using (Stream csvStream = txtInZip.Open()) {
...
}
}
}
这是我遇到的麻烦线路:
var txtInZip = archive.Entries.FirstOrDefault(x => x.FullName == filename + ".txt");
txtInZip
总是返回null。我也试过用Select
代替FirstOrDefault
我需要怎么做来纠正这个LINQ查询,以便它返回ZipArchiveEntry的目的?
谢谢。我正在阅读ZipArchiveEntry文档,但没有看到。还注意到文件名中有一个“(A)”(来自zip的名称),但里面的txt文件除此之外是相同的。我相应地调整了我的查询,并且从现在起也将使用'.Name'。 'Path.GetFileName(x.FullName)'通常也可以工作,但是'x.Name'对于我的需求来说是较少的处理/头痛。谢谢你! (upvoted) –