2011-03-30 67 views
3

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

的問題是,當我嘗試這種代碼:

這是正在調用的Default.aspx web服務我的UI代碼:

<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; 
     } 

    } 

當我試圖運行在瀏覽器本身的互聯網服務和傳遞一些參數,然後它顯示我這些:

<?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> 

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

不能弄明白:(

+1

您是否嘗試過使用自動完成之外調用該方法(使用DataContext)?我是猜測是你的查詢沒有返回任何結果。嘗試使用sql server profiler來確定你的調用發送到數據庫的查詢,然後看看如果你在sql server management studio中執行那個查詢會發生什麼。 – eoldre 2011-03-30 18:52:32

+0

@eoldre:在瀏覽器中查看Web服務文件時,我可以以XML格式查看結果。所以我認爲它是從數據庫中提取的。 – 2011-03-30 18:55:27

+0

@ DOT-NET對不起,結果如何?如果他們在瀏覽器中,那麼「不返回任何結果」是什麼意思? – 2011-03-30 18:56:44

回答

1

嘗試使用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(); 
+0

@Hunter:我試過了,但沒有顯示出值。 – 2011-03-30 18:53:48

+0

文化不敏感的比較適用於LINQ-to-SQL?尼斯。 – 2011-03-30 18:55:46

+1

@ .Net骯髒的妓女 - 嘗試:有沒有任何結果?他們中的任何一個都有一個名稱,其實是StartWith prefixText?是否拋出異常?你嘗試過調試嗎? – hunter 2011-03-30 18:57:05