使用LIKE子句比较两个List<string>

5

我有两个列表,一个是文件名列表,另一个是文件名存根列表。我想从第一个列表中选择所有文件名与文件名存根相似的文件。

List<string> files = new List<string>() {"a.txt", "b.txt", "c.txt"};
List<string> fileStub = new List<string>() {"a", "b", "c"};

这个查询将返回第一个列表中的所有记录。

提前感谢。


问题必须展示对所解决问题的最基本理解,包括尝试过的解决方案。 - Sayse
好吧,很好,我已经花了一段时间在这方面进行试验,并进行了大量的谷歌搜索,但没有得到正确的结果。 - CatchingMonkey
4个回答

13
var results = files.Where(x => fileStub.Any(y => x.Contains(y))).ToList();

你比我快了2分钟 :) - metacircle
太好了。我知道会是这样的!谢谢! - CatchingMonkey

4
如果顺序很重要(当然,对于这个示例,两个列表的大小很重要,如果您不想出现IndexOutOfRange异常)
var res = files.Where((file, index) => file.Contains(fileStub[index]));

如果您不介意排序(则列表大小不重要)。
var res = files.Where(file => fileStub.Any(fs => file.Contains(fs)));

2
var result = files.Where(item => fileStub.Any(stub => item.Contains(stub))).ToList();

1
使用AnyContains方法。
List<string> files = new List<string>() {"a.txt", "b.txt", "c.txt"};
List<string> fileStub = new List<string>() {"a", "c"};
var result = files.Where(x => fileStub.Any(y => x.Contains(y))).ToList();

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接