如何在List <string> </string>中搜索任何文本

时间:2010-06-23 07:24:20

标签: c#

我有列表,我需要搜索类似的项目:

如果用户搜索smi,它会带来所有包含smi的项目?

有什么想法吗?

5 个答案:

答案 0 :(得分:6)

这将找到以'smi'(mySearchString)

开头的所有结果
foreach(var result in myList.Where(s => s.IndexOf(mySearchString) == 0))
{
 // Do whatever
}

这将找到任何包含'smi'(mySearchString)

的内容
foreach(var result in myList.Where(s => s.IndexOf(mySearchString,StringComparison.InvariantCultureIgnoreCase) != -1))
{
 // Do whatever
}

这将搜索您的文本(忽略大小写),并返回包含该文本的任何字符串。

应该有效 - 不要靠近IDE,但希望有所帮助

答案 1 :(得分:5)

检查以下示例

string serachKeyword ="o";

List<string> states = new List<string>();
states.Add("Frederick");
states.Add("Germantown");
states.Add("Arlington");
states.Add("Burbank");
states.Add("Newton");
states.Add("Watertown");
states.Add("Pasadena");
states.Add("Maryland");
states.Add("Virginia");
states.Add("California");
states.Add("Nevada");
states.Add("Ohio");

List<string> searchResults = states.FindAll(s => s.Contains(serachKeyword));

答案 2 :(得分:1)

搜索包含'smi'的项目

var result = list.Where(s => s.Contains("smi"));

答案 3 :(得分:1)

如果你想在任何地方抓住所有包含“smi”的项目,比如“smith”和“vesmit”:

var list = myList.Where(m => m.Contains("smi"));

如果你想抓住字符串开头的所有包含“smi”的项目,比如“smith”,“smitten”和“smile”:

var list = myList.Where(m => m.BeginsWith("smi"));

如果您想要更多灵活性,可以使用正则表达式

var list = myList.Where(m => Regex.IsMatch(m, "regexPattern"));

答案 4 :(得分:0)

如果你使用没有LINQ的C#版本,你可以使用Find的{​​{1}}方法,如here所述(它在该页面上也有很大的样本)。