繁体   English   中英

如何比较两个列表,其中一个列表以另一个列表开头,并且只返回“悬垂”元素?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM