透過LINQ篩選目錄中的檔案,用GridView顯示篩選結果

摘要:透過LINQ篩選目錄中的檔案,用GridView顯示篩選結果

LINQ to Object真是好用,只要能夠把資料放到【物件集合】後,接下來要去下條件篩選,對LINQ來說是輕而易舉的事情。

這裡就用檔案系統來做個範例

再以下這篇中,已經提到怎麼用GridView來顯示某資料夾裡面的內容
http://www.dotblogs.com.tw/topcat/archive/2008/03/06/1278.aspx

這裡更將這個應用衍生用LINQ來篩選,我們將會作以下這些事情

  1. 依照指定的資料夾,撈出資料夾中的檔案資訊,放到ViewState中
  2. 透過LINQ撈取指定的副檔名檔案,並顯示在GridView中

作法如下:

首先一樣的安排一下畫面的控制項:

    資料夾:<asp:TextBox ID="txtDir" runat="server"></asp:TextBox>
        <asp:Button ID="btnGetAllData" runat="server" Text="讀取資料夾檔案" />
        <br />
        <div id="divC" runat="server">
            附檔名:
            <asp:TextBox ID="txtCData" runat="server"></asp:TextBox>
            <asp:Button ID="btnQry2" runat="server" Text="篩選" />
        </div>
        <br />
        <asp:GridView ID="GridView1" runat="server">
        </asp:GridView>

接著在CodeFile中的程式,先處理會用到的Imports,這邊等下會用到LINQ,不要忘了這個重要的System.Linq

Imports System.IO
Imports System.Collections.Generic
Imports System.Linq

再來宣告一個變數用來存放資料夾中的檔案資訊

Dim myFiles As List(Of FileInfo)

在PageLoad的時候,先從ViewState中取回myFiles,如果一開始沒有東西,就New一下產生執行個體

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        myFiles = ViewState("myFiles")
        If myFiles Is Nothing Then
            myFiles = New List(Of FileInfo)
        End If
    End Sub

接著處理取得資料夾內所有檔案資訊並放入myFiles中

    Protected Sub btnQry2_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnQry2.Click
        Dim o = From f In myFiles _
                Where f.Extension Like "*" & Me.txtCData.Text & "*" _
                Select f
        Me.GridView1.DataSource = o
        Me.DataBind()
    End Sub

從最後的部分,使用LINQ來篩選資料真是輕鬆愉快啊,只要設定好Where的條件就可以了^_^

 


以下是簽名:


Microsoft MVP
Visual Studio and Development Technologies
(2005~2019/6) 
topcat
Blog:http://www.dotblogs.com.tw/topcat