我有两个列表,如果它包含列表2中的任何值,我想要列表1的值。
List<string> list1 = new List<string>();
list1.Add("Sunday is far away");
list1.Add("Today is Monday");
list1.Add("Tuesday is too near");
List<string> list2 = new List<string>();
list2.Add("Sunday");
list2.Add("Monday");
list2.Add("Tuesday");
var result1 = list1.Where(x => list2.Any(y => y.Contains(x))).ToList(); //no results
var result2 = list2.Where(x => list1.Any(y => y.Contains(x))).ToList(); //give values of list2. But I need values of list1
更新
我需要结果中list1的值,我该怎么做?
答案 0 :(得分:1)
你错过了简单的事情,看看集合,第一个列表中的所有项目都大于第二个列表中的所有项目,因此包含将返回false。因此,您必须首先检查第二项,如下所示:
这是您的modified code with result:
var result1 = list1.Where(x => list2.Any(y => x.Contains(y))).ToList();
var result2 = list2.Where(x => list1.Any(y => y.Contains(x))).ToList();
答案 1 :(得分:0)
你可以。如果List1包含List2的任何值,则result = List1。否则为null;
var result = list2.Any(l2 => list1.Contains(l2))==true?list1:null;