2016-07-11 8 views
-2

Ich habe eine ListBox und eine Liste aller englischen Namen.Kann ListBox dies tun?

OK, lassen Sie uns sagen, dass ein "Benutzer" Eingabe Buchstaben "J". Ich möchte, dass meine ListBox einige Elemente auswählt (möglicherweise 5), um die Ergebnisse dem Benutzer anzuzeigen.

Ich möchte nicht, wenn mein Benutzer "J" eingibt und die ListBox jeden Namen laden muss, der mit "J" beginnt. Alle will ich meine ListBox zufällig zu tun mit dem Buchstaben J.

   List<string> DictionaryList = new List<string>().Take(5).ToList(); 

      //WEB 
      WebClient web = new WebClient(); 
      String html = web.DownloadString("http://www.EXAMPLE.org/Letter/J"); 
      MatchCollection m1 = Regex.Matches(html, @"<li>\s*(.+?)\s*</li>", RegexOptions.Singleline); 

      foreach (Match m in m1) 
      { 
       string city = m.Groups[1].Value; 
       DictionaryList.Add(city); 
      } 

EINE FRAGE UPDATE Start ein paar Elemente Ergebnisse laden:

Wie kann ich meine ListBox Ergebnis aktualisieren, wenn der Benutzer einen anderen Buchstaben hinzufügen, beispiels ("Ja"). Bei Benutzereingabe "Ja". Ich möchte meine ListBox aktualisieren, um das Gleiche wie die obige Frage zu tun (zufällig einige Ergebnisse in der Nähe von "Ja" auszuwählen)

Danke, Wan-Fai.

+0

Versuchen Sie https://msdn.microsoft.com/en-us/library/system.random(v=vs.110).aspx – MichaelMao

+0

Dann müssen Sie "web.DownloadString (...") jedes Mal aufrufen, wenn Benutzer a drücken Schlüssel. Oder lade alle Möglichkeiten herunter und speichere sie lokal, benutze linq, um sie zu suchen, wahrscheinlich schneller. –

+0

Ist das ein winforms- oder wpf-Projekt? – Clint

Antwort

0

Vielleicht hilft Ihnen das. Verwenden Startdaten:

var list = new List<string>(); 
string[] names = {"Jon","Julia","Josh","Jonson","Mai","Gordon"}; 
var input = "Jo"; 

wählen Sie 2 Elemente beginnend mit "Jo"

var result = list.Where(n=>n.StartsWith(input)).Take(2); 

wählen 2 zufällige Elemente mit "Jo" ab verwenden this

var result = list.Shuffle().Where(n=>n.StartsWith(input)).Take(2); 

wählen 2 ähnliche Elemente bei " Jo "verwenden this

var result = list 
    .Where(n=>CalcLevenshteinDistance(n.Substring(0,input.Count()),input) >= input.Count()-input.Count()*0.5) 
    .Take(2);