如果List
内容为:
0. line one
1. line two
2. line three
3. line four
和要在列表中搜索的输入字符串是:
string str = "three";
这种方式if (List.Contains(str))
它不等于列表中任何存在的字符串,搜索结果为False
。如果我用equals搜索例如获得相等的索引:int index = List.FindIndex(x => x.Equals(str));
但是这样if (List.Any(str.Contains))
我得到了True
搜索输入three
的结果,因为列表中的某些字符串包含此输入作为字符串或字符串的一部分。
问题是如何正确获得与(List.Any(str.Contains))
相同的结果,但也可以将此字符串与列表中存在的任何其他相等或相等的部分一起显示。使用输入line three
查找three
并显示从列表中获取的line three
字符串。
答案 0 :(得分:1)
首先,List.Any(str.Contains)
不适用于您的情况。它检查str
中是否包含任何行。你需要检查相反的事情 - 是否有包含str
的行:
var lines = List.Where(line => line.Contains(str));
如果要检查任何一行是否与给定单词匹配,则可以使用lines.Any()
。请注意,如果要避免此查询运行两次,可以将行放到列表中。您还可以使用FindAll
类的List<T>
方法。在这种情况下,所有匹配的行将作为列表返回:
var lines = List.FindAll(line => line.Contains(str));