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)));
var q = list1.Where(t=>Regex.IsMatch(t,String.Join("|",list2.ToArray()))));
似乎适用于字符串列表。在 LINQ 中使用 Regex 可能会出现问题。例如,这在 Linq2SQL 中不起作用。
我正在尝试列出第一个列表中的所有元素,其中包含等于第二个列表中所有元素的子字符串
第一个列表:
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)));
var q = list1.Where(t=>Regex.IsMatch(t,String.Join("|",list2.ToArray()))));
似乎适用于字符串列表。在 LINQ 中使用 Regex 可能会出现问题。例如,这在 Linq2SQL 中不起作用。