Как запросить список элементов в C#?

используя списки, которые я использую

List<int> list = new List<int>();
list.AddRange(otherList);

Как это сделать с помощью очереди? эта коллекция не имеет метода AddRange.

Queue<int> q = new Queue<int>();
q.AddRange(otherList); //does not exists

3 ответов


Queue имеет конструктор, который принимает ICollection. Вы можете передать свой список в очередь, чтобы инициализировать его теми же элементами:

var queue = new Queue<T>(list); 

в вашем случае следующим образом

Queue<int> ques = new Queue<int>(otherList);

otherList.Foreach(o => q.Enqueue(o));

вы также можете использовать этот метод расширения:

    public static void AddRange<T>(this Queue<T> queue, IEnumerable<T> enu) {
        foreach (T obj in enu)
            queue.Enqueue(obj);
    }

    Queue<int> q = new Queue<int>();
    q.AddRange(otherList); //Work!

вы можете инициализировать список очереди:

Queue<int> q = new Queue<int>(otherList);