2015-05-14 19 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

相关问题