[英]How do I compare two lists where one list starts with the other, and only return the "overhang" elements?
我有两个List<string>
:
清单 1:
snap
crackle
清单 2:
snap
crackle
pop
bang
列表 2 将始终以与列表 1 相同的元素开始,但总会有一些额外的元素“挂在最后”。 我想返回一个包含这些“悬垂元素”的列表。
所以在上面的例子中,我想要一个列表:
pop
bang
是否有执行此操作的 LINQ 运算符?
您可以使用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上运行此示例。
您可以使用Except()
linq 方法来执行此操作:
var onlyIn2 = list2.Except(list1);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.