【问题标题】:Auto Suggested Text Box with concatenated string with LINQ to SQL使用 LINQ to SQL 连接字符串的自动建议文本框
【发布时间】:2009-12-08 15:24:55
【问题描述】:

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

<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 行)'不是从'字符串派生的'"

任何男孩有建议,请发表评论。谢谢。

【问题讨论】:

  • 我没有在 Select 语句中使用匿名类型,而是使用了这样的别名 Select FullName = s.FirstName & " " & s.LastName 并且它可以工作。不过,我还是想看看你的建议。

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


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多