Barakr
Barakr

Reputation: 59

sorting queue per time

I have an object queue which fill with class called SerialPortData. this class contain a field in type of datetime which called dt.

I want to order (sort) nt queue per the field dt.

is there a simple way to do that?

here is what I am written so far.

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;
}

Upvotes: 0

Views: 140

Answers (1)

HaroldHues
HaroldHues

Reputation: 308

Letting Linq do it is an option, I would test your solution against this and see if one performs better than the other.

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

Upvotes: 2

Related Questions