LINQ - 将list2中存在的list1项添加到list3

时间:2017-01-04 05:03:12

标签: c# linq

我有两个List<int>list1list2。 现在我需要创建一个LINQ表达式,它应该以list1中每个项目的方式工作,如果它在list2中可用,则将其存储在list3中。例如,list1包含{5, 10, 15},list2包含{3, 5, 15, 20}。然后在LINQ的帮助下,list3应该包含{5,15}。我试过的是 -

list3 = list1.Where(t1 => list2.Any(t2 => t1.Contains(t2))).ToArray();

3 个答案:

答案 0 :(得分:6)

list3 = list1.Intersect(list2).ToList();

答案 1 :(得分:1)

与其他答案一样,Intersect对您来说是个不错的选择,但我想修复代码中的错误,实际上您应该在.Contains中执行List2操作不在List2的元素中。还有一点需要注意的是,赋值操作的LHS属于List<int>类型,因此您必须使用.ToList()代替.ToArray()。这意味着你必须这样写:

list3 = list1.Where(t1 => list2.Contains(t1)).ToList();

或类似的东西:

list3 = list1.Where(t1 => list2.Any(x=> x == t1)).ToList();

答案 2 :(得分:0)

list3 = (from p in list1 where list2.Contains(p) select p).ToList();