我有像这样的列表,我希望能够到这个列表中搜索来自另一个字符串来一子。 例:
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;
}
使用LINQ,只是检索的第一个结果:
string result = list.FirstOrDefault(s => s.Contains(srch));
要做到这一点W / O的LINQ(如早期的.NET版本,如.NET 2.0),您可以使用List<T>
的FindAll
方法,在这种情况下会返回包含搜索项列表中的所有项目:
var resultList = list.FindAll(delegate(string s) { return s.Contains(srch); });
要返回所有条目次:
IEnumerable<string> result = list.Where(s => s.Contains(search));
只有第一种:
string result = list.FirstOrDefault(s => s.Contains(search));
什么你写会导致编译错误
对于“string.Substring(INT)”的最佳重载的方法匹配具有一些无效参数
子用来得到使用字符位置和/或所得到的字符串的长度字符串的一部分。
例如srch.Substring(1, 3)
返回字符串“她的”
正如其他都提到你应该使用Contains
如果在另一个出现一个字符串,它告诉你。 如果你想知道你会用实际位置IndexOf
我喜欢用的indexOf或含有
someString.IndexOf("this");
someString.Contains("this");
同样的问题,我不得不这样做。
你需要这个:
myList.Where(listStrinEntry => myString.IndexOf(listStringEntry) != -1)
哪里:
myList
是List<String>
具有这样的值myString
必须包含在任意的位置
所以,事实上,你如果搜索的myString包含任何从列表中的条目。 希望这是你想要的东西......
而对于CaseSensitive
使用:
YourObj yourobj = list.FirstOrDefault(obj => obj.SomeString.ToLower().Contains("some substring"));
要么
YourObj yourobj = list.FirstOrDefault(obj => obj.SomeString.ToUpper().Contains("some substring"));