c#:两个新的字符串数组,其中一个包含另一个包含的字符串?

时间:2013-11-14 03:44:06

标签: c# string linq list merge

我有两个字符串列表。

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左边的JOIN左边的列表,也许,但不知道怎么把它拉下来,如果这甚至是正确的方法。

有什么想法吗?

感谢。

1 个答案:

答案 0 :(得分: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();