Solved

VB.NET DirectoryInfo Linq Query

Posted on 2010-09-02
8
718 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
ID: 33591433
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)
ID: 33591495
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
ID: 33595970
tried that way as well....same results
0
 
LVL 47

Expert Comment

by:Wayne Taylor (webtubbs)
ID: 33596171
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
Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

 
LVL 25

Author Comment

by:kevp75
ID: 33617545
i will try this out later today
0
 
LVL 25

Author Comment

by:kevp75
ID: 33619252
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
ID: 33621900
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
ID: 33653353
thank you
0

Featured Post

Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

This tutorial demonstrates one way to create an application that runs without any Forms but still has a GUI presence via an Icon in the System Tray. The magic lies in Inheriting from the ApplicationContext Class and passing that to Application.Ru…
Article by: jpaulino
XML Literals are a great way to handle XML files and the community doesn’t use it as much as it should.  An XML Literal is like a String (http://msdn.microsoft.com/en-us/library/system.string.aspx) Literal, only instead of starting and ending with w…
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…
With the power of JIRA, there's an unlimited number of ways you can customize it, use it and benefit from it. With that in mind, there's bound to be things that I wasn't able to cover in this course. With this summary we'll look at some places to go…

867 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

16 Experts available now in Live!

Get 1:1 Help Now