这个问题是来自服务器故障的migrated,因为它可以在堆栈溢出上回答。Migrated 5天前. 我得到了一个包含字符串List<string> custList = new List<string>();的列表,我得到了一个textbox,我找不到或想一种方法来搜索列表,而在我的文本框写作。列表字符串格式是这样的211 | john smith | 03125468879我需要能够搜索的名字或电话号码,我尝试了其他方法,但过滤器从一开始。
AutoCompleteStringCollection sourceName = new AutoCompleteStringCollection();
AutoCompleteStringCollection sourcePhone = new AutoCompleteStringCollection();
2条答案
按热度按时间lfapxunr1#
要在C#中搜索字符串列表,可以使用LINQ(语言集成查询)根据条件过滤列表。在本例中,我们希望根据文本框中输入的姓名或电话号码过滤列表。
首先,我们需要获取文本框中输入的文本。我们可以通过处理textbox的
TextChanged
事件来做到这一点。每次文本框中的文本更改时,都会引发此事件。然后,我们可以使用在文本框中输入的文本来过滤列表。在上面的代码中,我们获取了在textbox中输入的文本,并将其存储在
searchText
变量中。然后,我们使用LINQ根据列表中的每个字符串是否包含searchText
来过滤custList
。Where方法返回IEnumerable<string>
,我们使用ToList*方法将其转换为List<string>
。最后,我们可以在ListBox或DataGridView中显示过滤后的列表。但是,此代码将仅根据每个字符串是否包含搜索文本来筛选列表。要特别根据姓名或电话号码过滤列表,我们需要将列表中的每个字符串拆分为其组成部分,并分别比较它们。
在上面的代码中,我们使用Split方法将列表中的每个字符串拆分为其组成部分。然后,我们修剪姓名和电话号码,以删除任何前导或尾随空格。最后,我们使用Contains方法将姓名和电话号码分别与搜索文本进行比较。Where方法返回
IEnumerable<string>
,我们使用ToList*方法将其转换为List<string>
。最后,我们可以在ListBox或DataGridView中显示过滤后的列表。请注意,此代码假设列表中的每个字符串的格式为**“ID|姓名、名称|电话号码”**。如果格式不同,则需要相应地调整代码。
06odsfpq2#
我在代码中添加了2行
然后我用计时器检查输入是否以“0”开始,因为我所有的电话号码都以0开始
当然,对于我的集合,我在循环中使用了这两行来将我的字符串添加到集合列表
拆分文本
211 | john smith | 03125468879
以获取电话或姓名到我的文本框(电话)和(姓名)我使用了一个方法最后是我使用的SQL查询