How to: Query for Files with a Specified Attribute or Name (Visual Basic)
This example shows how to find all files that have a specified file name extension (for example ".txt") in a specified directory tree. It also shows how to return either the newest or oldest file in the tree based on the creation time.
Example
Module FindFileByExtension
Sub Main()
' Change the drive\path if necessary
Dim root As String = "C:\Program Files\Microsoft Visual Studio 9.0"
'Take a snapshot of the folder contents
Dim dir As New System.IO.DirectoryInfo(root)
Dim fileList = dir.GetFiles("*.*", System.IO.SearchOption.AllDirectories)
' This query will produce the full path for all .txt files
' under the specified folder including subfolders.
' It orders the list according to the file name.
Dim fileQuery = From file In fileList _
Where file.Extension = ".txt" _
Order By file.Name _
Select file
For Each file In fileQuery
Console.WriteLine(file.FullName)
Next
' Create and execute a new query by using
' the previous query as a starting point.
' fileQuery is not executed again until the
' call to Last
Dim fileQuery2 = From file In fileQuery _
Order By file.CreationTime _
Select file.Name, file.CreationTime
' Execute the query
Dim newestFile = fileQuery2.Last
Console.WriteLine("\r\nThe newest .txt file is {0}. Creation time: {1}", _
newestFile.Name, newestFile.CreationTime)
' Keep the console window open in debug mode
Console.WriteLine("Press any key to exit.")
Console.ReadKey()
End Sub
End Module
Compile the code
Create a Visual Basic console application project, with an Imports
statement for the System.Linq namespace.
See also
Collaborate with us on GitHub
The source for this content can be found on GitHub, where you can also create and review issues and pull requests. For more information, see our contributor guide.