我有两个清单:
List<string> list1 = new List<string>(){ "a", "b", "c", "d" };
List<string> list2 = new List<string>(){ "b", "d", "e" };
我想查找list1中与list2中的项匹配的所有项,并生成包含以下内容的List list3:
{ false, true, false, true }
我怎么能这样做?
提前致谢, 波状
答案 0 :(得分:7)
这就是全部:
list1.Select(str => list2.Contains(str)).ToList();
答案 1 :(得分:2)
@Balazs答案是正确的,但您应该知道列表上的Contains
操作是O(n)操作。如果列表非常大,那么创建新列表将是O(n * m)操作,这可能非常慢。如果要检查某个值是否在其他值中,最好的方法是使用一些基于散列的结构,其中Contains
运算具有O(1)。所以,只需将第二个列表值放入HashSet
var hashSet = new HashSet<string>(list2);
var result = list1.Select(hashSet.Contains).ToList();