Thursday, January 17, 2008
I think this is kinda neat ;-)

No more writting of compareto's or equals just use linq.


Dim _Directories() As String Dim _Directory As String Dim _DirectoryInfos As New List(Of DirectoryInfo)

_Directories = Directory.GetDirectories("c:/")
For Each _Directory In _Directories
Dim directoryinfo As System.IO.DirectoryInfo = New System.IO.DirectoryInfo(_Directory)
_DirectoryInfos.Add(directoryinfo)
Next ' Run LINQ Query Dim _DirectoryInfosOrderedByCreationTime = From DirectoryInfos In _DirectoryInfos _
Order By DirectoryInfos.CreationTime Descending _
Select DirectoryInfos

' Display results of query If _DirectoryInfosOrderedByCreationTime.Count > 0 Then For Each DirectoryInfo In _DirectoryInfosOrderedByCreationTime
TextBox1.AppendText("Directory: " & DirectoryInfo.FullName & " Date: " & DirectoryInfo.CreationTime & ControlChars.CrLf)
Next End If



1/17/2008 11:16 PM Romance Standard Time  #    Disclaimer  |  Comments [3]  |  Trackback
Saturday, January 26, 2008 3:14:13 AM (Romance Standard Time, UTC+01:00)
You don't need the first For Each. LINQ removes many loops.
Try this:

Sub Main()
' Run LINQ query
Dim directories = _
From path In System.IO.Directory.GetDirectories("c:\") _
Let directory = New System.IO.DirectoryInfo(path) _
Order By directory.CreationTime Descending _
Select directory

' Display results of query
If directories.Count > 0 Then
For Each directory In directories
Console.WriteLine("Directory: " & directory.FullName & " Date: " & directory.CreationTime & ControlChars.CrLf)
Next
End If
End Sub
Saturday, January 26, 2008 3:16:00 AM (Romance Standard Time, UTC+01:00)
Don't forget to use the power of let ;-)
See http://linqinaction.net/blogs/main/archive/2007/12/05/use-the-power-of-let-in-your-linq-queries.aspx
Saturday, January 26, 2008 7:12:18 PM (Romance Standard Time, UTC+01:00)
Very nice, thanks.
Comments are closed.