2012-01-13 88 views
0

嗨,我可以搜索帶有.jpg擴展名的所有圖像,並將其傳遞到fancybox圖庫,問題是我只想要圖像的特定產品 例如,如果產品有5個圖像,它們被保存爲(productid_imagenumber.jpg),因此具有productid 99的產品將被保存爲99_1.jpg,99_2.jpg同樣99_5.jpg, 我可以通過productID,但我無法找到一個只爲了獲取那的productID,而不是讓這是由下面的函數完成的所有圖像:搜索文件夾中的特定文件

Dim directory As DirectoryInfo = New System.IO.DirectoryInfo("C:Images\") 
     Dim allImages() = directory.GetFiles("*.jpg", SearchOption.AllDirectories) 
     Dim strContent As String = "" 
     For Each image As FileInfo In allImages 

      Dim strTemp As String = (String.Format("<img src=""{0}"" />", image.Name)) 
      strContent = "<a class=""fancybox-thumb"" rel=""fancybox-thumb1"" href=""" & image.Name + image.Extension & """ title="""">" & _ 
      "<img src=""" & image.Name + image.Extension & """ alt="" /></a>" 
     Next 

     If Not String.IsNullOrEmpty(strContent) Then 
      Return String.Format("<div id=""product-lightbox""><p>{0}</p></div>", strContent) 
     Else 
      Return String.Empty 
     End If 

    End Function 

任何一個可以就如何做到這一點的任何建議或幫助。

回答

1

試試這個:

Dim images = (From img In directory.GetFiles("*.jpg", IO.SearchOption.AllDirectories) 
       Where img.Name.Contains("_") _ 
       AndAlso img.Name.Split("_"c)(0) = productID).ToList 

好吧,你使用的是.NET 2.0:

Dim allProductIDImages As New List(Of IO.FileInfo) 
For Each img As IO.FileInfo In directory.GetFiles("*.jpg", IO.SearchOption.AllDirectories) 
    If img.Name.Contains("_") Then 
     Dim ID As String = img.Name.Split("_"c)(0) 
     If ID.Equals(productID) Then 
      allProductIDImages.Add(img) 
     End If 
    End If 
Next 

另 - 可能更快 - 的做法是讓GetFiles預搜索:

Dim pattern As String = String.Format("*{0}_*.jpg", productID) 
Dim allProductIDImages() As IO.FileInfo = _ 
     directory.GetFiles(pattern, IO.SearchOption.AllDirectories) 
+0

這是否會找到該productid的所有圖像,例如,如果我通過100,它會找到所有與該pro相關的圖像管道ID 100是100_1.jpg,100_2.jpg ...... – 2012-01-13 11:29:36

+0

試一試......是的,它應該。第一部分是productID(作爲字符串),第二部分是圖像編號(作爲字符串),查詢將所有圖像作爲List(Of FileInfo)返回。 – 2012-01-13 11:30:25

+0

它會返回所有圖像的數組,或者我應該將其定義爲昏暗的圖像() – 2012-01-13 11:35:32