2011-12-03 40 views
3

如何计算C#中有序列表的减法(设置操作)?减去有序列表

我很简洁的解决方案。

E.g.代码执行后:

List<int> a = new int[] { 1, 2, 5, 6, 7}.ToList(); 
List<int> b = new int[] { 1, 2, 3, 6}.ToList(); 
List<int> c = ListSubtract(a, b); 

c应该包含5, 7

O(a.Count()+b.Count())操作中执行会很好,但并不重要。
谢谢。

+0

如果'b'长于'a'会怎么样?这是一套操作吗?或者位置是否重要? – Ani

+0

设置操作,更新问题 – sergtk

回答

6

您可以使用LINQ Except运算符。

List<int> c = a.Except(b).ToList(); 
+0

优秀的答案。一般来说,如果必须对集合进行一些操作,LINQ可以在95%的情况下处理这个问题。 – Oybek

+0

@Oybek是的,但我对LINQ没有太多的经验,也没有习惯如何更好地找到我需要的东西。事实上,我期望LINQ对我有些帮助:) – sergtk