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

C# 如何比较两个列表,其中一个列表以另一个列表开头,并且只返回“quot;“悬挑”;元素?,c#,.net,linq,C#,.net,Linq,我有两个列表: 清单1: snap crackle 清单2: snap crackle pop bang 列表2总是以与列表1相同的元素开始,但总是有一些额外的元素“挂在末尾”。我只想返回这些“悬置元素”的列表 在上面的例子中,我想要一个列表: pop bang 是否有LINQ运算符可以执行此操作?您可以使用除扩展方法外的其他方法: var list1 = new List<string> { "snap", "crackle" }; var list2 = new List&

我有两个
列表

清单1:

snap
crackle
清单2:

snap
crackle
pop
bang
列表2总是以与列表1相同的元素开始,但总是有一些额外的元素“挂在末尾”。我只想返回这些“悬置元素”的列表

在上面的例子中,我想要一个列表:

pop
bang

是否有LINQ运算符可以执行此操作?

您可以使用除扩展方法外的其他方法:

var list1 = new List<string> { "snap", "crackle" };
var list2 = new List<string> { "snap", "crackle", "pop", "bang" };
var result = list2.Except(list1).ToList();
在上运行此示例。

您可以使用linq方法执行此操作:

var onlyIn2 = list2.Except(list1);
如果一个列表总是以第二个列表的内容开始,那么为什么不在最后得到范围呢?Linq不是必需的
list2.GetRange(list1.Count,list2.Count-list1.Count)
Except
生成两个序列的集合差,而不是列表差。
Except
生成两个序列的集合差,而不是列表差。
var onlyIn2 = list2.Except(list1);