Как мне отобразить отдельные элементы в списке автозаполнения?

#c# #asp.net

#c# #asp.net

Вопрос:

Как мне отобразить отдельные элементы в списке автозаполнения? Я не хочу, чтобы дубликаты отображались в списке. Я считываю данные из XML-файла.

Вот код моей веб-службы:

 [WebService(Namespace = "http://tempuri.org/")]
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
    [ScriptService]
     
    public class WebService : System.Web.Services.WebService
    {
        [WebMethod]
        public string[] GetItemsList(string prefixText, int count)
        {
            List<string> suggestions = new List<string>();
            using (XmlTextReader reader = new XmlTextReader(HttpContext.Current.Server.MapPath("flightdata3.xml")))
            {
                while (reader.Read())
                {
                    if (reader.NodeType == XmlNodeType.Element amp;amp; reader.Name == "departurelocation")
                    {
                        string itemName = reader.ReadInnerXml();
                        if (itemName.StartsWith(prefixText, StringComparison.InvariantCultureIgnoreCase))
                        {
                            suggestions.Add(itemName);
     
                            if (suggestions.Count == count) break;
                        }
                    }

                    if (reader.NodeType == XmlNodeType.Element amp;amp; reader.Name == "destinationlocation")
                    {
                        string itemName = reader.ReadInnerXml();
                        if (itemName.StartsWith(prefixText, StringComparison.InvariantCultureIgnoreCase))
                        {
                            suggestions.Add(itemName);

                            if (suggestions.Count == count) break;
                        }
                    }

                }
            }
            return suggestions.ToArray();
        }
    }
  

Ответ №1:

Чтобы гарантировать количество, вам придется проверять наличие отдельных элементов перед их добавлением:

 if(!suggestions.Contains(itemName))
  suggestions.Add(itemName);
  

В противном случае вы получите в худшем случае только одно предложение.