C# Except

2021-02-17 05:19

阅读:439

我们往往需要把一个列表中,去除另外一个列表的元素,C#提供了很好的方法,Except。

但是往往不小心就掉进坑里了。

看下面的代码:

static void Main(string[] args)
        {
            Listint> allItem = new Listint>();
            allItem.Add(1);
            allItem.Add(2);
            allItem.Add(3);
            allItem.Add(4);
            allItem.Add(3);
            allItem.Add(2);

            Listint> removedItems = new Listint>();
            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。可结果呢,运行结果如下:

技术分享图片

没错,就是把剩下元素中的重复的项也去除了,而可能不是我们原本想要达到的目的。

 


评论


亲,登录后才可以留言!