我有两个List<string>
:
清单1:
snap
crackle
清单2:
snap
crackle
pop
bang
列表2 总是以与列表1相同的元素开头,但总是有一些额外的元素“悬挂在最后”。我想返回这些“悬垂元素”的列表。
所以在上面的例子中,我想要一个列表:
pop
bang
是否有LINQ运算符执行此操作?
答案 0 :(得分:1)
您可以使用Except扩展方法:
var list1 = new List<string> { "snap", "crackle" };
var list2 = new List<string> { "snap", "crackle", "pop", "bang" };
var result = list2.Except(list1).ToList();
Ivan Stoev指出,上述解决方案将产生设定差异。如果您想要列表差异,并且第二个列表始终包含开头第一个列表中的元素,您可以使用此解决方案:
var result = list2.Skip(list1.Count).ToList();
在.NET Fiddle上运行此示例。
答案 1 :(得分:1)
您可以使用Except()
linq方法执行此操作:
var onlyIn2 = list2.Except(list1);