在字符串列表中查找子字符串

我有一个这样的列表,我希望能够在此列表中搜索来自另一个字符串的子字符串。 例:

List list = new List(); string srch = "There"; list.Add("1234 - Hello"); list.Add("4234 - There"); list.Add("2342 - World"); 

我想在我的列表中搜索"There"并返回"4234 - There" 。 我试过了:

 var mySearch = list.FindAll(S => s.substring(srch)); foreach(var temp in mySearch) { string result = temp; } 

使用Linq,只需检索第一个结果:

 string result = list.FirstOrDefault(s => s.Contains(srch)); 

要使用Linq(例如早期的.NET版本,如.NET 2.0),您可以使用ListFindAll方法,在这种情况下,它将返回列表中包含搜索词的所有项:

 var resultList = list.FindAll(delegate(string s) { return s.Contains(srch); }); 

要返回所有条目:

 IEnumerable result = list.Where(s => s.Contains(search)); 

只有第一个:

 string result = list.FirstOrDefault(s => s.Contains(search)); 

您编写的内容会导致编译错误

‘string.Substring(int)’的最佳重载方法匹配有一些无效的参数

子串用于使用结果字符串的字符位置和/或长度来获取字符串的一部分。

例如srch.Substring(1, 3)返回字符串“her”

正如其他人所提到的,你应该使用Contains来告诉你一个字符串是否在另一个字符串中出现 如果你想知道你使用IndexOf的实际位置

我喜欢使用indexOf或contains

 someString.IndexOf("this"); someString.Contains("this"); 

同样的问题我不得不这样做。

你需要这个:

 myList.Where(listStrinEntry => myString.IndexOf(listStringEntry) != -1) 

哪里:

myListList具有myString必须包含在任何位置的值

事实上你搜索myString是否包含列表中的任何条目。 希望这是你想要的……