LINQ 查询在包含第二个列表的子字符串元素的列表中查找项目

LINQ query to find items in a list containing substring elements from a second list

我正在尝试列出第一个列表中的所有元素,其中包含等于第二个列表中所有元素的子字符串

第一个列表:

C:\Folder\Files_01026666.pdf
C:\Folder\Files_01027777.pdf
C:\Folder\Files_01028888.pdf
C:\Folder\Files_01029999.pdf

第二个列表:

01027777
01028888

列表结果应为:

C:\Folder\Files_01027777.pdf
C:\Folder\Files_01028888.pdf

我得到的越接近 .Intersect() 但两个字符串元素应该等于

List<string> resultList = firstList.Select(i => i.ToString()).Intersect(secondList).ToList();

List<string> resultList = firstList.Where(x => x.Contains(secondList.Select(i=>i).ToString()));

List<string> resultList = firstList.Where(x => x == secondList.Select(i=>i).ToString());

我知道我可以用另一种方式做到这一点,但我想用 LINQ 来做到这一点。 我查看了其他查询,但我可以找到与 Linq 的密切比较。任何想法或任何你能指出我的地方都会很有帮助。

我们可以使用EndsWith() with Path.GetFileNameWithoutExtension(),因为secondList中的字符串不是完整的文件名。

var result = firstList
    .Where(path => secondList.Any(fileName => Path.GetFileNameWithoutExtension(path).EndsWith(fileName)));

Try Online

var q = list1.Where(t=>Regex.IsMatch(t,String.Join("|",list2.ToArray()))));

似乎适用于字符串列表。在 LINQ 中使用 Regex 可能会出现问题。例如,这在 Linq2SQL 中不起作用。