0

我有两个字符串列表。

1:

new List<string>{ "jan", "feb", "nov" }

2:

new List<string>{ "these are the months", "this is jan,", "this is feb,", "this is mar,",  "this is jun,", "this is nov"}

我希望我的结果是:

List<string>{ "these are the months", "this is jan,", "this is feb,", "this is nov"}

现在我正在做一个凌乱的拆分,然后是一个包含嵌套 foreach 的 linq。

但是必须有一个更简单的方法,我想到了一个 linq left JOIN,左边有列表 2,但不知道如何实现它,如果这甚至是正确的方法。

有任何想法吗?

谢谢。

4

1 回答 1

2

你可以用一点 Linq 做到这一点:

var list1 = new List<string>{ "jan", "feb", "nov" };
var list2 = new List<string>{ "these are the months", ... };

var result = list2.Where(x => list1.Any(y => x.Contains(y))).ToList();

但是,此结果集将不包含第一个元素,因为"these are the months"不包含list1. 如果这是一个要求,您可能需要执行以下操作:

var result = list2.Take(1).Concat(list2.Skip(1).Where(x => list1.Any(y => x.Contains(y)))).ToList();
于 2013-11-14T03:46:18.013 回答