5

我有 2 个列表,一个是文件名列表,第二个是文件名存根列表,我想从第一个列表中选择文件名与文件名存根类似的所有内容。

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

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

提前致谢。

4

4 回答 4

13
var results = files.Where(x => fileStub.Any(y => x.Contains(y))).ToList();
于 2013-09-09T13:03:17.637 回答
4

如果顺序很重要(当然,对于这个示例,两个列表的大小很重要,如果您不希望出现 IndexOutOfRange 异常)

var res = files.Where((file, index) => file.Contains(fileStub[index]));

如果您不介意顺序(比列表大小不重要)

var res = files.Where(file => fileStub.Any(fs => file.Contains(fs)));
于 2013-09-09T13:06:43.447 回答
2
var result = files.Where(item => fileStub.Any(stub => item.Contains(stub))).ToList();
于 2013-09-09T13:05:48.150 回答
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();
于 2013-09-09T13:04:05.647 回答