2009-02-18 119 views
1

我有一個項目數組,排序,以便最早的項目在數組中。隊列訂購

我想從數組中加載一個隊列,這樣當我彈出隊列中的項目時,最早的項目會先到達。

我該怎麼做?

回答

7

使用LINQ對象...

var q = new Queue<T>(array.OrderBy(d => d.date)); 

編輯:行動,圍繞走錯了路。

+0

根據此:http://msdn.microsoft.com/en-gb/library/69zckb8z.aspx它需要IEnumerable 。 – Richard 2009-02-18 20:55:58

1

試試這個

public static T ArrayToQueue<T>(T[] items) { 
    var queue = new Queue<T>(); 
    Array.ForEach(items, i => queue.Enqueue(i)); 
    return queue; 
} 
+0

*重新啓動車輪* – mquander 2009-06-07 00:12:28

2

如果你知道你的數組已經排序先進先出那麼你可以使用:

Queue<YourType> q = new Queue<YourType>(yourSortedArray); 

如果數組沒有預先排序,那麼你可以進行排序它使用LINQ:

Queue<YourType> q = 
    new Queue<YourType>(yourUnsortedArray.OrderBy(x => x.YourDateProperty)); 

然後,你可以調用q.Dequeue,以獲得最舊到最新○項目刻申。

+0

您確定需要將陣列反向嗎? – teedyay 2009-02-18 16:05:39

2

你想要一個priority queue。然後,無論您的傳入項目是否已排序,都無關緊要。

也許在庫中有一個實現。

PS:優先在你的情況下會映射到年齡