2015-05-14 34 views
0

對不起我的英語。vb.net僅返回來自linq.IQueryable的選定列/字段

我一直在網上尋找「動態Linq查詢」,我發現了一個對我有用的工具。 Guide to Creating Dynamic LINQ Queries。我在線轉換器將其轉換爲VB。其結果是

Public Shared Function GetFilteredDataWithPage(Customer As String, Itemdesc As String, JoNumber As String) 
    Dim DB As New JoDataClassesDataContext 
    Dim DataQuery As IQueryable(Of JoMainTbl) = DB.JoMainTbls 

    If Customer.Trim().Length > 0 Then 
     DataQuery = DataQuery.Where(Function(a) a.Customer.StartsWith(Customer)) 
    End If 
    If Itemdesc.Trim().Length > 0 Then 
     DataQuery = DataQuery.Where(Function(a) a.ItemDescription.StartsWith(Itemdesc)) 
    End If 
    If JobNumber.Trim().Length > 0 Then 
     DataQuery = DataQuery.Where(Function(a) a.JoNumber = JoNumber) 
    End If 
    Return DataQuery 
    End Function 

我有5個字段

「JONumber,樣品,dateCreated會,顧客,ItemDesc」

,並顯示它

DataGridView.DataSource = GetFilteredData(TxtCustomer.Text, TxtItemDesk.Text, TxtJobNumber.Text) 

的問題的表是否我希望它僅以此順序顯示文件「JONumber,Customer,ItemDesc」。所有的幫助都非常感謝。先謝謝你。

+1

添加'Select'呼叫中的所有'Where'東西之後。 – MarcinJuraszek

+0

不好意思問,但你能給我這個例子的代碼。你可以看到我只是複製並粘貼這段代碼。我試圖閱讀在Visual Basic上彈出的工具提示,它非常混亂。我真的不知道linq.IQueryable(out of t)。 – Newbies

+0

只需注意您的功能不包括返回類型... – ilans

回答

0

由於@MarcinJuraszek在評論所說,你應該使用一個Select這樣的:

Public Shared Function GetFilteredDataWithPage(Customer As String, Itemdesc As String, JoNumber As String) 
    Dim DB As New JoDataClassesDataContext 
    Dim DataQuery As IQueryable(Of JoMainTbl) = DB.JoMainTbls 

    If Customer.Trim().Length > 0 Then 
     DataQuery = DataQuery.Where(Function(a) a.Customer.StartsWith(Customer)) 
    End If 
    If Itemdesc.Trim().Length > 0 Then 
     DataQuery = DataQuery.Where(Function(a) a.ItemDescription.StartsWith(Itemdesc)) 
    End If 
    If JobNumber.Trim().Length > 0 Then 
     DataQuery = DataQuery.Where(Function(a) a.JoNumber = JoNumber) 
    End If 
    Return DataQuery.Select(Function(x) New With {.JONumber=x.JONumber, .Customer=x.Customer, .ItemDesc=x.ItemDesc}) 
    End Function 
+0

不起作用。我得到錯誤重載解析失敗,因爲沒有可訪問的'選擇'接受這個數量的參數。 – Newbies

+0

查看我的修復(返回一個匿名對象)。 – ilans

+0

對於遲到的回覆感到抱歉。它現在有效。非常感謝。我以爲我會使用DataGridView.Columns()。Visible和DataGridView.Columns()。DisplayIndex到我的程序的其餘部分。這爲我節省了很多編碼。再次感謝你... – Newbies

相關問題