将时间戳与LINQ Query中的byte[]进行比较

本文关键字:比较 byte 中的 时间戳 LINQ Query | 更新日期: 2023-09-27 18:27:25

我有一个字节数组,需要将其与SQL列timestamp进行比较,timestamp也是一个字节阵列。这是一个时间戳,我需要从中获取之前或之后的所有记录。

我正在使用EF,并试图让它在LINQ查询中工作。

byte[] myArray = repo.GetTimeStampByDate(DateTime.Now);
rec.sometable.Where(o => o.timestamp <= myArray).ToList();

将时间戳与LINQ Query中的byte[]进行比较

最简单的方法是将两个字节数组转换为UInt64值,然后进行比较。

或者,您可以创建一个自定义方法来比较时间戳数组:

 // assuming both arrays are of equal lengths
 public static int Compare(byte[] ts1, byte[] ts2)
    {
        int i = 0;
        while (i < ts1.Length)
        {
            if (ts1[i] > ts2[i])
                return 1;
            else if (ts1[i] < ts2[i])
                return -1;
            ++i;
        }
        return 0;
    }

然后

byte[] myArray = repo.GetTimeStampByDate(DateTime.Now);
rec.sometable.Where(o => Compare(o.timestamp, myArray) <= 0).ToList();