How to copy items from list to stack without using loop
You can create a stack from anything that is IEnumerable
var myStack = new Stack<MyObjectType>(myList);
See MSDN: http://msdn.microsoft.com/en-us/library/76atxd68.aspx
However, the stack constructor will be using a loop internally, you just don't see it.
If you want to Pop the items in the same order as they appear in your list, then reverse your list before you create the stack from it.
var myStack = new Stack<MyObjectType>(myList.Reverse());