首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何从AutoSuggestBox获得更准确的搜索结果?

如何从AutoSuggestBox获得更准确的搜索结果?
EN

Stack Overflow用户
提问于 2015-08-27 15:28:57
回答 3查看 177关注 0票数 1

我在Win10上的Windows Universal应用程序中使用AutoSuggestBox。我可以很好地过滤建议,但顺序是混乱的。例如,在我的例子中,建议是城市名称。当我在框中键入“t”时,我希望首先看到的是“德黑兰”,而不是“雅典”,因为它位于列表的顶部,其中包含所有带有“t”的城市。

我意识到我需要一个按以下顺序排序的列表

代码语言:javascript
复制
City.Name.IndexOf(sender.Text, StringComparison.OrdinalIgnoreCase)

但是,实现这一目标的最简单和最有效的方法是什么?我的代码如下:

代码语言:javascript
复制
    private void AutoSuggestBox_TextChanged(AutoSuggestBox sender, AutoSuggestBoxTextChangedEventArgs args)
    {
        // Only get results when it was a user typing
        if (args.Reason == AutoSuggestionBoxTextChangeReason.UserInput)
        {
            List<string> myList = new List<string>();
            foreach (City myCity in Cities)
            {
                if (myCity.Name.IndexOf(sender.Text, StringComparison.OrdinalIgnoreCase) >= 0)
                {
                    myList.Add(myCity.Name);
                }
            }

            sender.ItemsSource = myList;
        }
    }
EN

回答 3

Stack Overflow用户

发布于 2015-08-27 16:12:28

Ty this

代码语言:javascript
复制
if (myCity.Name.StartsWith("t"))
    myList.Add(myCity.Name);
票数 0
EN

Stack Overflow用户

发布于 2015-08-27 16:22:59

最后,我将条件更改为

代码语言:javascript
复制
if (myCity.Name.IndexOf(sender.Text, StringComparison.OrdinalIgnoreCase) == 0)
票数 0
EN

Stack Overflow用户

发布于 2015-08-27 16:31:35

您可以使用StartsWith & Contains函数。

代码语言:javascript
复制
if (myCity.Name.StartsWith("t"))
myList.Add(myCity.Name);
if (myCity.Name.Contains("t"))
myList.Add(myCity.Name);

但它们必须在单独的foreach循环中使用。第一个过滤掉所有以T开头的城市,下一个过滤掉所有包含T的城市。

如果你想在一个foreach循环中使用它,你可以这样做:

代码语言:javascript
复制
if (myCity.Name.StartsWith("t"))
myList1.Add(myCity.Name);
if (myCity.Name.Contains("t") && myCity.Name.IndexOf(sender.Text, StringComparison.OrdinalIgnoreCase) != 0)
myList2.Add(myCity.Name);

然后,您可以合并这两个列表,并将其作为itesmSource。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32243196

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档