2009-12-08 59 views
1

我使用自动建议的方式创建了一个文本框。所以,它运作良好。它只建议名字,但我希望它建议全名(名字和姓氏,这两个不同的列)。看看后面,下面的代码和预期一样:使用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行)的1维阵列’的值不能被转换为‘字符串的1维阵列’,因为“ (第50行)'不是派生的从'字符串'“

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

+0

而不是使用匿名类型与我所使用的别名是这样选择的全名Select语句= s.FirstName&“”&s.LastName和它的作品。不过,我想看看你的建议。 – 2009-12-08 15:31:42

回答

2

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

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