C# 如何搜索列表中的任何文本<;字符串>;

C# 如何搜索列表中的任何文本<;字符串>;,c#,C#,我有一个列表,我需要搜索类似以下内容的项目: 如果用户搜索smi,它将带来包括smi的所有项目 有什么想法吗?这将找到所有以“smi”(mySearchString)开头的结果 这将找到任何包含“smi”(mySearchString)的文件 这将搜索文本(忽略大小写),并返回包含文本的所有字符串 这应该是可行的-不要把IDE放在旁边,但希望它能帮助你如果你使用一个没有LINQ的C版本,你可以使用所描述的列表的查找方法(该页面上也有相当大的示例)。搜索包含“smi”的项目 var result

我有一个列表,我需要搜索类似以下内容的项目:

如果用户搜索smi,它将带来包括smi的所有项目


有什么想法吗?

这将找到所有以“smi”(mySearchString)开头的结果

这将找到任何包含“smi”(mySearchString)的文件

这将搜索文本(忽略大小写),并返回包含文本的所有字符串


这应该是可行的-不要把IDE放在旁边,但希望它能帮助你

如果你使用一个没有LINQ的C版本,你可以使用所描述的
列表的
查找
方法(该页面上也有相当大的示例)。

搜索包含“smi”的项目

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

如果您想获取包含“smi”的所有项目,如“smith”和“vesmit”:


如果要获取字符串开头包含“smi”的所有项目,如“smith”、“smitten”和“smile”:

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

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

检查以下示例

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));
string serachKeyword=“o”;
列表状态=新列表();
添加(“弗雷德里克”);
添加(“德国镇”);
添加(“阿灵顿”);
添加(“伯班克”);
添加(“牛顿”);
添加(“水城”);
添加(“帕萨迪纳”);
添加(“马里兰州”);
添加(“弗吉尼亚”);
添加(“加利福尼亚”);
添加(“内华达州”);
添加(“俄亥俄州”);
List searchResults=states.FindAll(s=>s.Contains(serachKeyword));

可能使用正则表达式进行不区分大小写的搜索。是的,但是你有两个问题:)哈,不,没有现成的编译器,所以无法确认语法。使用BeginsWith()而不是IndexOf(),是吗?并使用StringComparer.OrdinalIgnoreCase忽略大小写。如果您需要更大的灵活性,可以使用正则表达式(参见我的示例)。StringComparizers不能处理Contains,它只接受字符串。缺少创建扩展方法。您可以使用此lambda执行不区分大小写的搜索:s=>s.IndexOf(“fs”,StringComparison.InvariantCultureIgnoreCase)!=-1.
var list = myList.Where(m => m.Contains("smi"));
var list = myList.Where(m => m.BeginsWith("smi"));
var list = myList.Where(m => Regex.IsMatch(m, "regexPattern"));
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));