如何匹配另一个列表中列表元素的子字符串?
How can I match substrings of a list's elements in another list?
出于某种原因,我似乎无法使用 Lambda 解决这个问题(我可以使用循环,但我宁愿在 lambda 中学习它)。
我有两个列表。我试图在第一个列表的任何字符串中找到第二个列表中的字符串。
[Test]
public void CheckInsideList()
{
var mainList = new List<string>() { "looking_for_specific_word", "has_specific_word", "doesnt_have_word" };
var reservedList = new List<string>() { "specific", "Bob", "Loblaws" };
//var returnValue = mainList.Where(d => d.Contains(reservedList));
Assert.Greater(returnValue.Count, 0);
}
我不确定我应该使用 Contains
还是 IndexOf
。
我期待从 mainList
返回 "looking_for_specific_word" 和 "has_specific_word"。
我想你想要的是这个:
mainList.Where(m => reservedList.Any(r => m.Contains(r));
您可以使用 Any
+ Contains
:
1a)
var returnValue = mainList.Where(d => reservedList.Any(d.Contains));
几乎等于:
1b)
var returnValue = mainList.Where(d => reservedList.Any(r=> d.Contains(r)));
或与IndexOf
(允许比较不区分大小写):
2)
var returnValue = mainList
.Where(d => reservedList
.Any(r => d.IndexOf(r, StringComparison.InvariantCultureIgnoreCase) >= 0));
试试这个:-
var result = mainList.Where(x => reservedList.Any(z => x.Contains(z)));
出于某种原因,我似乎无法使用 Lambda 解决这个问题(我可以使用循环,但我宁愿在 lambda 中学习它)。
我有两个列表。我试图在第一个列表的任何字符串中找到第二个列表中的字符串。
[Test]
public void CheckInsideList()
{
var mainList = new List<string>() { "looking_for_specific_word", "has_specific_word", "doesnt_have_word" };
var reservedList = new List<string>() { "specific", "Bob", "Loblaws" };
//var returnValue = mainList.Where(d => d.Contains(reservedList));
Assert.Greater(returnValue.Count, 0);
}
我不确定我应该使用 Contains
还是 IndexOf
。
我期待从 mainList
返回 "looking_for_specific_word" 和 "has_specific_word"。
我想你想要的是这个:
mainList.Where(m => reservedList.Any(r => m.Contains(r));
您可以使用 Any
+ Contains
:
1a)
var returnValue = mainList.Where(d => reservedList.Any(d.Contains));
几乎等于:
1b)
var returnValue = mainList.Where(d => reservedList.Any(r=> d.Contains(r)));
或与IndexOf
(允许比较不区分大小写):
2)
var returnValue = mainList
.Where(d => reservedList
.Any(r => d.IndexOf(r, StringComparison.InvariantCultureIgnoreCase) >= 0));
试试这个:-
var result = mainList.Where(x => reservedList.Any(z => x.Contains(z)));