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);