1

我很难找到一种合适的方法来搜索List<>我拥有的字符串以匹配用户指定的字符串,我什至不确定我是否会以最好的方式进行处理,但到目前为止我得到的是:

   // This is the input string.
        string input = userDefinedStr.ToLower(); //New variable and made into lower cases.           

        for (int i = 0; i < listBox1.Items.Count; i++)
        {
            if (listBox1.Items[i].ToString().IndexOf(input, stringComparison.OrdinalIgnoreCase) >= 0)
            {
                listBox1.SetSelected(i, true);
            }
            else
            {
                MessageBox.Show("Sorry, There was no matches found.", "An oupps happend!");                    
            }

        }

问题是在List包含用户定义字符串的字符串中可能有更多的一个字符串,我猜最好的方法实际上是在其中显示所有List<string>匹配项,listBox1而不是仅仅标记找到的第一个匹配项。

还是可以用另一种更有效的方式来完成?!?

我是 C# 和一般编码的新手,所以我觉得我不知道最好的方法,我已经阅读了很多文章和帖子,但我找不到指向我正确方向的文章。

4

2 回答 2

1

您可以过滤列表框的内容以仅显示与搜索条件匹配的项目。所有其他项目都被删除。这意味着listBox1不包含实际数据,而只是对数据的一个视图,并且完整的数据存储在其他地方。用户还必须有一种方法来重置过滤器,以便再次使用完整的数据集。

于 2012-08-16T14:45:26.010 回答
1

您展示了一个良好的开端,但是使用 . 中的该if语句for,您将得到一个针对每个不匹配的项目弹出的消息框。

如果您希望使用目前的代码,只需bool在(初始化为 false)之前添加一个,for并在找到匹配项时将其设置为 true。一旦for完成,测试它bool,如果它仍然是错误的,没有找到匹配的,所以你应该显示你的消息框。

我怀疑它可以在 Linq 中用更少的击键来完成,但它可能不是那么容易阅读/理解,取决于和可维护(/易于阅读/理解)代码比聪明更可取,因为你必须稍后修复它。

于 2012-08-16T14:52:41.233 回答