2010-08-13 55 views
0

下午所有 - 這是星期五的第13次,所以當然我有一個絕對母馬!無法在自動填充方法中將類型字符串隱式轉換爲字符串[]

下面的代碼'應該'創建一個將在文本框自動完成中使用的項目列表。

public string[] GetAutoComplete(string prefixText, int count) 
    { 
     try 
     { 
      string memberid = HttpContext.Current.Session["VDS_MemberID"].ToString(); 
      string locationid = HttpContext.Current.Session["VDS_LocationID"].ToString(); 
      string inhouse = HttpContext.Current.Session["VDS_Inhouse"].ToString(); 
      string supplier = HttpContext.Current.Session["VDS_Supplier"].ToString(); 
      string groupw = HttpContext.Current.Session["VDS_Group"].ToString(); 
      string external = HttpContext.Current.Session["VDS_External"].ToString(); 

      VDSORDAL.PDC_VDSOREntities autocomplete = new VDSORDAL.PDC_VDSOREntities(); 

      var r = (from p in autocomplete.tblAutoCompletes 
        where p.MemberId == memberid && p.LocationId == locationid && p.ACItem.Contains(prefixText) 
        select p); 

      if (inhouse != "DoNotDisplayInhouse") 
         r = r.Where(p => p.ACItem == inhouse); 

      if (supplier != "DoNotDisplaySupplier") 
       r = r.Where(p => p.ACItem == supplier); 

      if (groupw != "DoNotDisplayGroup") 
       r = r.Where(p => p.ACItem == groupw); 

      if (external != "DoNotDisplayExternal") 
       r = r.Where(p => p.ACItem == external); 

      return r.Distinct().OrderBy(p => p.ACItem).ToString(); 

     } 

但是,我將問題標題看成錯誤。

任何人都可以提出一個解決辦法嗎?道歉..我有一個糟糕的一天。

回答

1

可能

return r.Distinct().OrderBy(p => p.ACItem).ToString(); 

應該

return r.Distinct().OrderBy(p => p.ACItem).ToArray(); 

更新:

聽起來好像是你真正的問題。嘗試(下面的代碼是大腦編譯)

return (from p in r orderby p.ACItem desc select p.ACItem).ToArray(); 

我假設ACItem是要返回,如果沒有,選擇數組中想要什麼的字符串。

或可能

return (from p in r where p != null orderby p.ACItem desc select p.ACItem).ToArray(); 

where p != null可能是必要的,你很可能需要檢查r和看看裏面有什麼了,真的沒有足夠的信息,以便能夠決定性地回答這個問題。
也就是說,.ToArray而不是.ToString仍然是您的問題的答案,其他任何問題都是不同的問題。

+0

我試過ToArray的,但隨後收到System.ArgumentNullException錯誤:無法隱converty型「VDSORDAL.tblAutoComplete []」到「字符串[]」 – 2010-08-13 15:20:38

+0

排序依據(...)選擇(P => p.ToString())。ToArray(); – DonaldRay 2010-08-13 15:28:34

1

最後一行應該是:

return r.Distinct().OrderBy(p => p.ACItem).ToArray(); 
0

不做ToString()。二者必選其一ToArray()ConvertAll<string>().ToArray()

相關問題