我有两个字符串列表。
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左边的列表,也许,但不知道怎么把它拉下来,如果这甚至是正确的方法。
有什么想法吗?
感谢。
答案 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();