我有一个ZipArchive
,里面有一堆文件。我试图获取所有文件格式为.stl
的文件,但我似乎无法正确使用。
这就是我所拥有的:
var scan = import.ZipFile.Entries.Any(e => e.Name == string.Format("*.stl").ToList());
我确信我错过了一些愚蠢的东西,但我不断收到错误:
operator '==' cannot be applied to operands of type 'string' and
'system.collections.generic.list<char>'
有人能帮助我吗?
答案 0 :(得分:1)
Any
返回一个布尔值 - 我想你想得到所有项目的列表?
var scan = import.ZipFile.Entries.Where(e => e.Name.EndsWith(".stl", StringComparison.InvariantCultureIgnoreCase)).ToList();
答案 1 :(得分:1)
你需要:
var scan = import.ZipFile.Entries
.Where(e => Path.GetExtension(e.Name).Equals(".stl", StringComparison.InvariantCultureIgnoreCase))
.ToList();
你错放了()。这导致字符串与字符列表之间的比较,<string>.ToList
将返回List<char>
。它可能是:
var scan = import.ZipFile.Entries.Any(e => e.Name == string.Format("*.stl")).ToList();
但是你会得到一个List<bool>
,你需要Enumerable.Where
条款。
更重要的是,您的比较e.Name == string.Format("*.stl")
将无效。您需要比较扩展名,使用Path.GetExtension
方法。您的比较是使用Directory.GetFiles
或命令提示符使用的通配符,但您不能在C#中使用string
比较时使用它。