簡體   English   中英

使用LINQ在WebService中自動完成

[英]Autocomplete in WebService using LINQ

我正在使用Web服務自動完成。 在我的網絡服務中,我使用的是LDS。

問題是,當我嘗試這段代碼時:

這是我的UI代碼,它在Default.aspx中調用webservice:

<asp:ToolkitScriptManager ID="ToolkitScriptManager1" runat="server">
    <Services>
    <asp:ServiceReference Path ="WebService1.asmx" />
    </Services>
    </asp:ToolkitScriptManager> 

    <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>

    <asp:AutoCompleteExtender ID="TextBox1_AutoCompleteExtender" runat="server" 
        DelimiterCharacters="" Enabled="True" ServicePath ="WebService1.asmx" ServiceMethod="ReturnEntity" EnableCaching="true"  TargetControlID="TextBox1" CompletionSetCount ="1">
    </asp:AutoCompleteExtender>

這是我的WebService文件(webservice1.asmx)

 [WebMethod]
    public string[] ReturnEntity(string prefixText, int count)
    {
        List<string> responses = new List<string>();
        for (int i = 0; i < count; i++)
            responses.Add(prefixText + (char)(i + 65));

        return responses.ToArray();
    }

然后它工作。 但是,我正在研究這個代碼,它不起作用......

 [WebMethod]
    public string[] ReturnEntity(string prefixText)
    {
        using (DataClasses1DataContext search = new DataClasses1DataContext())
        {
            string[] fullText = (from n in search.Entities
                                 where n.Name.StartsWith(prefixText)
                                 select n.Name).ToArray();

            return fullText;
        }

    }

當我試圖在瀏覽器中運行webservice並傳遞一些參數時,它會顯示以下信息:

  <?xml version="1.0" encoding="utf-8" ?> 
- <ArrayOfString xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://tempuri.org/">
  <string>Starr</string> 
  <string>Sally Jeans</string> 
  <string>Steven Kline</string> 
  <string>Steven Goldberg</string> 
  </ArrayOfString>

這不會返回任何結果。 我只是想從我的表中顯示實體列表,列名稱是'名稱'。

無法弄清楚:(

嘗試使用StartsWith並傳入StringComparison

var result = from n in search.Entities
             where n.Name.StartsWith(prefixText, 
                 StringComparison.InvariantCultureIgnoreCase)
             select n.Name;

return result.ToArray();

如果這仍然在調用的上下文中,您可以使用ToLower()

var result = from n in search.Entities
             where n.Name.ToLower().StartsWith(prefixText.ToLower())
             select n.Name;

return result.ToArray();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM