我的目标是在partsearch.aspx页面上放置一个搜索框,搜索框将包含一个文本框和一个下拉列表。DropDownList有两个项,partname或nsn,需要在数据库查询的where子句中使用。如果partname是选定的值,那么查询需要基于该字段。如果nsn是所选值,则查询需要搜索nsn字段以查找文本框txtsearch的内容。
我的页面中有以下代码:
<asp:Label runat="server" ID="lblSearch" CssClass="black-normal-txt">Search by Part Name or NSN:</asp:Label>
<asp:TextBox runat="server" ID="txtSearch" CssClass="txtSearch swap_value" Text="Search for Parts"></asp:TextBox>
<asp:DropDownList runat="server" ID="ddlsearch" CssClass="black-normal-txt">
<asp:ListItem>Part Name</asp:ListItem>
<asp:ListItem>NSN</asp:ListItem></asp:DropDownList>
<asp:Button runat="server" ID="btnSubmit" Text="Search" />
代码隐藏如下:
Protected Sub btnSubmit_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnSubmit.Click
Using PartEntities As New diel_inventoryEntities()
Dim Parts = PartEntities.PartList
Dim query = From PartList In Parts
If (ddlsearch.selecteditem.tostring() = "PartName") Then
query = query.Where(Function(t) t.PARTNAME.Contains(txtSearch))
ElseIf (ddlsearch.selecteditem.tostring() = "NSN") Then
Query = Query.where(Function(t) t.NSN.Contains(txtSearch))
End If
End Using
End Sub
我收到以下错误:
错误2重载解析失败,因为无法使用以下参数调用可访问的“where”:
“System.Linq.Enumerable”中定义的扩展方法“public function where(predicate as system.func(of diel\u inventorymodel.partlist,integer,boolean))as system.collections.generic.ienumerable(of diel\u inventorymodel.partlist)”:嵌套函数与委托“system.func(of diel\u inventorymodel.partlist,integer,boo)的签名不同瘦肉)
“System.Linq.Enumerable”中定义的扩展方法“public function where(predicate as system.func(of diel_inventorymodel.partlist,boolean))as system.collections.generic.ienumerable(of diel_inventorymodel.partlist)”:重载解析失败,因为没有可访问的“contains”可以用以下参数调用:
“public function contains(value as string)as boolean”:“system.web.ui.webcontrols.textbox”类型的值无法转换为“string”。
“public函数”扩展方法包含“system.linq.enumerable”中定义的(值为char)布尔值:“system.web.ui.webcontrols.textbox”类型的值无法转换为“char”。
“system.linq.queryable”中定义的“public function where(谓词为system.linq.expressions.expression(of system.func(of diel_inventorymodel.partlist,integer,boolean))as system.linq.iqueryable(of diel_inventorymodel.partlist)”:嵌套函数没有与委托“system.func(of diel_inventorymodel)”相同的签名。partlist,integer,boolean)“。
扩展方法“public function where(谓词为System.Linq.Expressions.Expression(of System.Func(of Diel_InventoryModel.PartList,Boolean)))as System.Linq.iQueryable(of Diel_InventoryModel.PartList)”defined in“System.Linq.Queryable”:重载解析失败,因为没有可访问的“contains”可以用以下参数调用:
“public function contains(value as string)as boolean”:“system.web.ui.webcontrols.textbox”类型的值无法转换为“string”。
“public函数”扩展方法包含“system.linq.enumerable”中定义的(值为char)布尔值:“system.web.ui.webcontrols.textbox”类型的值无法转换为“char”。C:\inetpub\wwwroot\mydomain.com\partsearch.aspx.vb 15 25
http://localhost/mydomain.com/
有人知道这个错误吗?如果是,如何诊断和修复它?
非常感谢您的帮助和指导。