Я не могу думать о каком-либо изящном решении, как вы хотите, но если вы беспокоитесь о производительности ввода-вывода, вместо того, чтобы дважды находить каждый существующий файл, просто прочитайте все расположения файлов и сделайте все это в памяти. 1001 *
Dim dbFiles As List(Of String)
Dim files As New List(Of String)
files.AddRange(IO.Directory.GetFiles("path", "pattern", IO.SearchOption.AllDirectories))
Dim deletedFiles As New List(Of String)
For Each dbfile As String In dbFiles
If files.Contains(dbfile) Then
files.Remove(dbfile)
Else
deletedFiles.Add(dbfile)
End If
Next
' now deleteFiles should have all files that have been deleted from the file
' system and files should have all new files in the file system
Если имена путей, хранящиеся в БД, могут иметь регистр, отличный от имен в файловой системе, вам, возможно, придется изменить это.