如何显示列表中找到的字符串,它们相等或包含与搜索输入相等的部分

时间:2017-05-11 21:40:47

标签: c# list contains

如果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字符串。

1 个答案:

答案 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));