ListBox可以这样做吗?

时间:2016-07-11 10:05:11

标签: c# .net visual-studio listbox

我有一个ListBox和所有英文名称的列表。

好的,我们假设一个“用户”输入字母“J”。我希望我的ListBox选择一些项目(可能是5个)来向用户显示结果。

我不希望当我的用户键入“J”并且ListBox必须加载以“J”开头的每个名称。我希望我的ListBox所做的就是从字母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);
            }

另一个问题更新:

当用户添加另一个字母时,如何更新我的ListBox结果,例如(“Ja”)。当用户输入“Ja”时。我想更新我的ListBox来做与上面问题相同的事情(随机挑选几个接近“Ja”的结果)

谢谢,万辉。

1 个答案:

答案 0 :(得分:0)

也许这会对你有所帮助。使用开始数据:

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

选择以“Jo”开头的2个元素

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

选择以“Jo”开头的2个随机元素this

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

使用this

在“Jo”中选择2个相似的元素
var result = list
    .Where(n=>CalcLevenshteinDistance(n.Substring(0,input.Count()),input) >= input.Count()-input.Count()*0.5)
    .Take(2);