Solved

VB.NET DirectoryInfo Linq Query

Posted on 2010-09-02
8
710 Views
Last Modified: 2012-05-10
I am trying to get a list of files from a directory using LINQ.

The files names are along these lines:
google_FQDN.sm.xml (where FQDN is the actual FQDN)

tmpDomains is a comma-delimited list of FQDNs as they are pulled form an XMl file.  This pulls correctly.

The issue I am having is that nothing gets displayed.   I have verified that there are 6 files in the directory.    Each one of these files contains one of the FDQNs from tmpDomains.

I assume it is in my LINQ Query.

Please help?!?

Code to follow:

'Get List of domains from Common.BasePath & "Sites\CurrentSites.xml" based on SiteID
    'and do this query based on that returned string
    Dim objXml As New XmlDocument, tmpDomains As String
    Dim objNode As XmlNode
    With objXml
        .Load(Common.BasePath & "Sites\CurrentSites.xml")
        objNode = .SelectSingleNode("//Sites/Site[contains(@id,'" & AdminStuff.SiteID & "')]")
        tmpDomains = objNode.Attributes("domains").Value
    End With
    Dim tmpString As New StringBuilder, x As String, tmpCt As Long = 0
    Dim Query = From f In New DirectoryInfo(Common.BasePath & "Sitemaps\").GetFiles() _
                Select f.Name, f.CreationTime _
                Where "*" & Name & "*" Like tmpDomains
    tmpString.Append("<table width=""100%"" cellpadding=""0"" cellspacing=""0"" id=""auditTable"" class=""audit_table"">" & vbCrLf)
    tmpString.Append("  <thead>" & vbCrLf)
    tmpString.Append("      <tr>" & vbCrLf)
    tmpString.Append("          <th>File</th>" & vbCrLf)
    tmpString.Append("          <th>Posted</th>" & vbCrLf)
    tmpString.Append("      </tr>" & vbCrLf)
    tmpString.Append("  </thead>" & vbCrLf)
    tmpString.Append("  <tbody>" & vbCrLf)
    For Each Item In Query
        If tmpCt Mod 2 Then x = " style=""background:#EEE;""" Else x = ""
        tmpString.Append("  <tr>" & vbCrLf)
        tmpString.Append("      <td" & x & "><a href=""http://" & AdminStuff.SiteManaging & "/SiteMaps/" & Item.Name & """ target=""_blank"">" & Item.Name & "</a></td>" & vbCrLf)
        tmpString.Append("      <td" & x & ">" & Item.CreationTime & "</td>" & vbCrLf)
        tmpString.Append("  </tr>" & vbCrLf)
        tmpCt += 1
    Next
    tmpString.Append("  </tbody>" & vbCrLf)
    tmpString.Append("</table>" & vbCrLf)
    Response.Write(tmpString.ToString())
    tmpString = Nothing

Open in new window

0
Comment
Question by:kevp75
  • 5
  • 3
8 Comments
 
LVL 25

Author Comment

by:kevp75
Comment Utility
side notes.  the actual file list is:

google_www.o7th.com.xml
google_www.07th.com.xml
google_www.o7thwebdesign.com.xml
google_www.07thwebdesign.com.xml
google_07th.com.xml
google_o7th.com.xml

and the actual tmpDomains value is:
o7th.com, 07th.com, o7thwebdesign.com, 07thwebdesign.com, www.o7th.com, www.07th.com, www.o7thwebdesign.com, www.07thwebdesign.com

what I am trying to do is display the file list based on if they exist in tmpDomains
0
 
LVL 47

Expert Comment

by:Wayne Taylor (webtubbs)
Comment Utility
Looks like you might have your wildcards in the wrong place...

    Dim Query = From f In New DirectoryInfo(Common.BasePath & "Sitemaps\").GetFiles() _
                Select f.Name, f.CreationTime _
                Where Name Like "*" & tmpDomains & "*"

Wayne
0
 
LVL 25

Author Comment

by:kevp75
Comment Utility
tried that way as well....same results
0
 
LVL 47

Expert Comment

by:Wayne Taylor (webtubbs)
Comment Utility
How about something like this?

        Dim arrDomains() As String = tmpDomains.Replace(" ", "").Split(","c)
        Dim Query = From f In New IO.DirectoryInfo(Common.BasePath & "Sitemaps\").GetFiles() _
            Select f.Name, f.CreationTime Where arrDomains.Contains(Name.Replace("google_", "").Replace(".xml", ""))

Wayne
0
Highfive Gives IT Their Time Back

Highfive is so simple that setting up every meeting room takes just minutes and every employee will be able to start or join a call from any room with ease. Never be called into a meeting just to get it started again. This is how video conferencing should work!

 
LVL 25

Author Comment

by:kevp75
Comment Utility
i will try this out later today
0
 
LVL 25

Author Comment

by:kevp75
Comment Utility
Ok,

    Dim arrDomains() As String = tmpDomains.Split(", ")
    Dim Query = From f In New DirectoryInfo(Common.BasePath & "Sitemaps\").GetFiles() _
            Select f.Name, f.CreationTime Where arrDomains.Contains(Name.Replace("google_", "").Replace(".xml", "")) _
            Or arrDomains.Contains(Name.Replace("sitemap_", "").Replace(".xml", ""))


works, however, it does not grab the www files
0
 
LVL 47

Accepted Solution

by:
Wayne Taylor (webtubbs) earned 500 total points
Comment Utility
I created some xml files in a directory for testing, and this works fine for me....

        Dim tmpDomains As String = "o7th.com, 07th.com, o7thwebdesign.com, 07thwebdesign.com, www.o7th.com, www.07th.com, www.o7thwebdesign.com, www.07thwebdesign.com"

        Dim arrDomains() As String = tmpDomains.Replace(" ", "").Split(","c)
        Dim Query = From f In New DirectoryInfo("C:\ProgramData\SiteMaps\").GetFiles() _
                Select f.Name, f.CreationTime Where arrDomains.Contains(Name.Replace("google_", "").Replace(".xml", "")) _
                Or arrDomains.Contains(Name.Replace("sitemap_", "").Replace(".xml", ""))

        For Each v In Query
            MsgBox(v.Name)
        Next

Wayne
0
 
LVL 25

Author Closing Comment

by:kevp75
Comment Utility
thank you
0

Featured Post

6 Surprising Benefits of Threat Intelligence

All sorts of threat intelligence is available on the web. Intelligence you can learn from, and use to anticipate and prepare for future attacks.

Join & Write a Comment

Well, all of us have seen the multiple EXCEL.EXE's in task manager that won't die even if you call the .close, .dispose methods. Try this method to kill any excels in memory. You can copy the kill function to create a check function and replace the …
Since .Net 2.0, Visual Basic has made it easy to create a splash screen and set it via the "Splash Screen" drop down in the Project Properties.  A splash screen set in this manner is automatically created, displayed and closed by the framework itsel…
Internet Business Fax to Email Made Easy - With eFax Corporate (http://www.enterprise.efax.com), you'll receive a dedicated online fax number, which is used the same way as a typical analog fax number. You'll receive secure faxes in your email, fr…
In this tutorial you'll learn about bandwidth monitoring with flows and packet sniffing with our network monitoring solution PRTG Network Monitor (https://www.paessler.com/prtg). If you're interested in additional methods for monitoring bandwidt…

772 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

9 Experts available now in Live!

Get 1:1 Help Now