出于某种原因,我似乎无法用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”。
答案 0 :(得分:3)
我认为你想要的是:
mainList.Where(m => reservedList.Any(r => m.Contains(r));
答案 1 :(得分:2)
您可以使用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));
答案 2 :(得分:2)