每次排序队列

时间:2015-08-12 14:27:45

标签: c# queue

我有一个对象队列,它填充了名为SerialPortData的类。 此类包含datetime类型的字段,该字段名为dt。

我想按字段dt排序(排序)nt队列。

有一种简单的方法吗?

这是我到目前为止所写的内容。

private Queue<SerialPortData> sortQueuePerTime(Queue<SerialPortData> qsd)
{
        Queue<SerialPortData> _newQSD = new Queue<SerialPortData>();

        for (int i = 0; i < qsd.Count; i=i+2)
        {
            if(i==qsd.Count-1)
            {

                break;
            }
            int result = DateTime.Compare(qsd.ElementAt(i).dt, qsd.ElementAt(i+1).dt);
            if(result<0)
            {
                _newQSD.Enqueue(qsd.ElementAt(i));
                _newQSD.Enqueue(qsd.ElementAt(i+1));
            }
            else
            {

                _newQSD.Enqueue(qsd.ElementAt(i+1));
                _newQSD.Enqueue(qsd.ElementAt(i));
            }
        }
        return _newQSD;
}

1 个答案:

答案 0 :(得分:2)

让林克这样做是一种选择,我会针对此测试你的解决方案,看看一个人的表现是否优于另一个。

//Something Like this...
using System.Linq;
private Queue<SerialPortData> sortQueuePerTime(Queue<SerialPortData> qsd)
{
    return new Queue<SerialPortData>(qsd.OrderBy(q => q.dt));
}