2010-08-13 8 views
0

Après-midi tout - c'est vendredi 13 e donc bien sûr je vais avoir une jument absolue !!!Impossible de convertir implicitement type chaîne de caractères à string [] dans la méthode autocomplete

Le code ci-dessous, « devrait » créer une liste d'éléments qui seront utilisés dans un autocomplete textbox.

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(); 

     } 

Cependant, le titre de la question est considéré comme une erreur.

Quelqu'un peut-il suggérer un moyen de contourner ce problème? Excuses .. Je passe une mauvaise journée.

Répondre

1

Peut-être

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

devrait être

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

Mise à jour:

Sonne comme c'est votre vrai problème. Essayez (code suivant cerveau compilé)

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

Je suppose ACItem est la chaîne que vous voulez revenir, sinon, sélectionnez ce que vous voulez dans le tableau.

Ou peut-être

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

le where p != null peut être nécessaire, vous avez assez bien besoin d'inspecter r et voir ce qui est dans les informations là-bas, pas vraiment assez pour être en mesure de répondre à cette façon concluante.
Cela dit, au lieu de .ToArray.ToString est toujours la réponse à votre problème, toute autre chose est une autre question.

+0

J'ai essayé ToArray mais a reçu une erreur System.ArgumentNullException:. Impossible implicitement le type converty 'VDSORDAL.tblAutoComplete []' à 'string []' –

+0

OrderBy (...) Sélectionner (p => p.ToString()). ToArray(); – DonaldRay

1

La dernière ligne devrait être:

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

Ne pas faire un ToString(). Utilisez soit ToArray() ou ConvertAll<string>().ToArray()