选择OrderBy似乎不适用于LINQ表达式

时间:2015-08-10 15:48:55

标签: c# linq lambda

我定义了一个List集合:

public List<PacketToSend> Packets = new List<PacketToSend>();

PacketToSend类对象是:

public class PacketToSend
{
    public byte[] JPEG;
    public string LicenseKey;
    public Int64 TS;
    public Int64 FrameLag;
    public Int64 NetworkLag;
    public DateTime RelayDiff ;      
}

我在我的服务器的web-scokect连接上的OnMessage事件中添加了这个集合:

Packets.Add(new PacketToSend
{
    FrameLag = frameLag,
    RelayDiff = DateTime.Now,
    TS = timeStamp,
    JPEG = packet2,
    LicenseKey = licenseKey.ToUpper(),
    NetworkLag = 0
});  

这个问题唯一重要的值是TS字段。

我已经体验到消息的顺序有时不正确所以,我使用此代码来获得“最年轻的”消息。 TS:

var min = Packets.OrderBy(m => m.TS).FirstOrDefault(); 

现在我已经经历过(特别是当名单超过50时,“最年轻的”TS没有回归。

我打算尝试使用&#39; Min&#39;而是这样:

var min2 = Packets.OrderBy(m => m.TS).Min();

但我当然得到错误:

System.ArgumentException: At least one object must implement IComparable.

任何想法为什么第一种做法并不总是有效,也许是关于如何使用第二种做法的建议?

N.B。

更多信息。

我等到TS得到一个缓冲区5秒后再尝试获得最早的1.我知道人们会建议使用Locks但是我的FPS经历了减速,需要20fps 。此外,我使用了并发集合,但我遇到了错过的帧

0 个答案:

没有答案