如何在另一个列表中匹配列表元素的子字符串

本文关键字:列表元素 字符串 另一个 列表 | 更新日期: 2023-09-27 18:36:20

出于某种原因,我似乎无法使用 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

(一)

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

工作小提琴。