Reputation: 59
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
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