This question already has answers here:
How do I remove duplicates from a C# array?
                                
                                    (23个答案)
                                
                        
                                在10个月前关闭。
            
                    
我有两个整数堆栈StackA和StackB。

StackA具有以下值,但是StackB没有内容。

StackA
-----
[40]
[11]
[56]
[10]
[11]
[56]


现在我需要将不同的值从StackA复制到StackB。

    public static void CopyDistinctValues(Stack<int> source, Stack<int> destination)
    {
        int[] numArray = source.ToArray();
        for (int i = 0; i < numArray.Length; i++)
        {
            if (!destination.Contains(numArray[i]))
            {
                destination.Push(numArray[i]);
            }
        }
    }


和它的工作,但我不确定是否是最好的解决方案。

有没有更好的方法可以做到这一点,或者有任何内置的方法可以做到这一点?

如果不使用Array就能完成,那就更好了。

最佳答案

最短的方法是:

stackB = new Stack<int>(stackA.Distinct().Reverse());


反向是必需的,因为构造函数采用IEnumerable,并且Stack的IEnumerable实现使它从最后一项开始。

10-07 21:58