我有一个这样的列表,我希望能够在此列表中搜索来自另一个字符串的子字符串。例如:
List<string> list = new List<string>();
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;
}
答案 0 :(得分:26)
使用Linq,只需检索第一个结果:
string result = list.FirstOrDefault(s => s.Contains(srch));
要使用Linq(例如早期的.NET版本,例如.NET 2.0),您可以使用List<T>
的{{1}}方法,在这种情况下,它将返回包含搜索词的列表:
FindAll
答案 1 :(得分:10)
要返回所有条目:
IEnumerable<string> result = list.Where(s => s.Contains(search));
只有第一个:
string result = list.FirstOrDefault(s => s.Contains(search));
答案 2 :(得分:1)
您编写的内容会导致编译错误
'string.Substring(int)'的最佳重载方法匹配有一些无效的参数
Substring用于使用字符位置和/或结果字符串的长度来获取字符串的一部分。
例如,
srch.Substring(1, 3)
返回字符串“her”
正如其他人所提到的,你应该使用Contains
来告诉你一个字符串是否在另一个字符串中出现。如果您想知道实际位置,请使用IndexOf
答案 3 :(得分:0)
我想使用indexOf或包含
someString.IndexOf("this");
someString.Contains("this");
答案 4 :(得分:0)
我必须做同样的问题。
你需要这个:
myList.Where(listStrinEntry => myString.IndexOf(listStringEntry) != -1)
其中:
myList
List<String>
具有值
myString
必须包含在任何位置
事实上你搜索myString是否包含列表中的任何条目。 希望这是你想要的......
答案 5 :(得分:0)
对于CaseSensitive
,请使用:
YourObj yourobj = list.FirstOrDefault(obj => obj.SomeString.ToLower().Contains("some substring"));
OR
YourObj yourobj = list.FirstOrDefault(obj => obj.SomeString.ToUpper().Contains("some substring"));