我有以下问题:
For Each _file As String In Directory.EnumerateFiles(Quellpfad, "*.rdy").Take(500).Where(Function(item) item.Replace(Quellpfad, "").Length <= 11)
此代码应该从保存在字符串&#34; Quellpfad&#34;中的目录中获取文件。 通过以下两个标准:
1。)只有500个文件
2。)filename lenth&lt; = 11 eg。:0330829.rdy
文件0330829.rdy在目录中,但我无法通过上述代码找到它。
答案 0 :(得分:2)
您最后应使用Take
,因为您想先应用过滤器,还应使用Path.GetFileName
或Path.GetFileNameWithoutExtension
代替String.Replace
:
Dim files = From file In Directory.EnumerateFiles(Quellpfad, "*.rdy")
Where Path.GetFileName(file).Length <= 11
Take 500
在VB.NET中查询语法支持Take
,所以我更喜欢。
答案 1 :(得分:1)
您需要重新排序语句,将Where
放在Take
之前:
For Each _file As String In Directory.EnumerateFiles(Quellpfad, "*.rdy").Where(Function(item) item.Replace(Quellpfad, "").Length <= 11).Take(500)
Where
会返回与您的条件FIRST匹配的所有文件,然后将这些文件限制为500.