【问题标题】:Queue ordering队列排序
【发布时间】:2009-02-18 15:49:37
【问题描述】:

我有一个项目数组,排序后最旧的项目在数组中排在第一位。

我想从数组中加载一个队列,这样当我弹出队列中的项目时,最旧的项目首先出现。

我该怎么做?

【问题讨论】:

    标签: c# queue


    【解决方案1】:

    使用 LINQ to Objects...

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

    编辑:操作,错误的方式。

    【讨论】:

    【解决方案2】:

    你想要一个priority queue。那么你传入的项目是否排序并不重要。

    也许库中有一个实现。

    PS:您的情况中的 priority 将映射到 age

    【讨论】:

      【解决方案3】:

      如果您知道您的数组已经按最早排序,那么您可以使用:

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

      如果数组没有预先排序,那么您可以使用 LINQ 对其进行排序:

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

      然后您只需致电q.Dequeue 以按从旧到新的顺序获取商品。

      【讨论】:

      • 你确定需要反转数组吗?
      • @teedyay,谢谢,已更正!我也确实对此进行了测试,只是将结果读错了。 :(
      【解决方案4】:

      试试这个

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-11-01
        • 2013-12-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-05-20
        • 2022-01-25
        • 1970-01-01
        相关资源
        最近更新 更多