C# Except
我們往往需要把一個列表中,去除另外一個列表的元素,C#提供了很好的方法,Except。
但是往往不小心就掉進坑里了。
看下面的代碼:
static void Main(string[] args) { List<int> allItem = new List<int>(); allItem.Add(1); allItem.Add(2); allItem.Add(3); allItem.Add(4); allItem.Add(3); allItem.Add(2); List<int> removedItems = new List<int>(); removedItems.Add(1); removedItems.Add(2); allItem = allItem.Except(removedItems).ToList(); Console.WriteLine("count:" + allItem.Count); Console.WriteLine("items:"); foreach (int item in allItem) { Console.WriteLine(item); } Console.ReadKey(); }
首先,要注意的是,Except不是直接對原對象直接移除,所以如果想改變原來的對象,那么需要重新賦值。如:allItems = allItems.Except(removedItems).ToList()
其次,上面的例子中,最后allItems中剩下一個元素?表面上看,我以為剩下3個,一個4和兩個3。可結果呢,運行結果如下:

沒錯,就是把剩下元素中的重復的項也去除了,而可能不是我們原本想要達到的目的。

浙公網安備 33010602011771號