直接使用 var result = list1.Where(str1 => list2.Contains(str))是不行的,这个要求两个list的string值必须有相等的才行 例如list1中有apple,那么list2中必须有apple才能匹配,而list2中只有app所以匹配不了
解决办法:
List<string> list1 = new List<string> { "apple", "banana", "orange" }; List<string> list2 = new List<string> { "app", "ban", "ora" ,"test"}; var result = list1.Where(str1 => list2.Any(str2 => str1.Contains(str2))).Select((x,index)=>new { x,l2=list2[index]}).ToList();
这里select使用了带index的重载,从而根据index取where条件里list2中与之对应的值(仅适用于:list1和list2中时1:1的关系,如果是1:N则会错位导致错误,如下图)
标签:index,apple,list,str1,contains,list1,linq,list2,List From: https://www.cnblogs.com/xuejianxiyang/p/17579650.html