每次排序队列
sorting queue per time
我有一个名为 SerialPortData 的对象队列,其中填充了 class。
此 class 包含一个名为 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;
}
让 Linq 做它是一种选择,我会针对这个测试你的解决方案,看看一个是否比另一个表现更好。
//Something Like this...
using System.Linq;
private Queue<SerialPortData> sortQueuePerTime(Queue<SerialPortData> qsd)
{
return new Queue<SerialPortData>(qsd.OrderBy(q => q.dt));
}
我有一个名为 SerialPortData 的对象队列,其中填充了 class。 此 class 包含一个名为 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;
}
让 Linq 做它是一种选择,我会针对这个测试你的解决方案,看看一个是否比另一个表现更好。
//Something Like this...
using System.Linq;
private Queue<SerialPortData> sortQueuePerTime(Queue<SerialPortData> qsd)
{
return new Queue<SerialPortData>(qsd.OrderBy(q => q.dt));
}