自动建议的文本框,带有LINQ to SQL的连接字符串

时间:2009-12-08 15:24:56

标签: asp.net vb.net linq-to-sql

我正在创建一个包含自动建议的文本框。所以,它运作良好。它只建议使用名字,但我希望它能建议全名(两个不同列的名和姓)。看一下后面的代码,它按预期工作:

<System.Web.Services.WebMethod()> _
Public Shared Function GetNames(ByVal prefixText As String, ByVal count As Integer) As String()

    Dim db As New DemoDataContext()
    Return db.Students.Where(Function(n) n.FirstName.StartsWith(prefixText)).OrderBy(Function(n) n.FirstName).Select(Function(n) n.FirstName).Take(count).ToArray

End Function

这是标记:

        <asp:TextBox ID="TextBox1" runat="server" Width="191px"></asp:TextBox>
    <cc1:AutoCompleteExtender ID="TextBox1_AutoCompleteExtender" runat="server" 
         Enabled="True" minimumprefixlength="1"  ServiceMethod ="GetNames" TargetControlID="TextBox1">
    </cc1:AutoCompleteExtender>

我编写了以下代码,试图让文本框显示全名但不起作用:

        Dim query = (From s In db.Students _
               Where s.FirstName.StartsWith(prefixText) _
               Order By s.FirstName _
               Select New With {.Name = s.FirstName & " " & s.LastName}).Take(count).ToArray
        Return query

当我构建项目时,它表示“类型的值'一维数组(第50行)'不能转换为'一维数组的字符串',因为'(第50行)'不是从'字符串派生的““

Anyboy有一个建议,请评论。谢谢。

1 个答案:

答案 0 :(得分:2)

不要使用name属性创建一个新的匿名对象,只需返回字符串本身:

    Dim query = (From s In db.Students _
           Where s.firstname.StartsWith(prefixText) _
           Order By s.firstname _
           Select s.firstname & " " & s.lastname).Take(count).ToArray