【发布时间】:2013-08-10 18:11:23
【问题描述】:
我有一个用于数据输入的简单网页(使用 .NET 4.5 和 EF5 构建)。每次用户更新条目时,都会创建一个新行,其时间戳值大于插入的前一行(SQL Server 保证这一点)。
在数据库中,原始数据如下所示。简而言之,数据意味着 TransactionNumber = 1 被添加一次,然后被更新两次。
+---------------+-------------------+-----------+--------------------+
| TransactionId | TransactionNumber | Comment | TimeStamp |
+---------------+-------------------+-----------+--------------------+
| 1 | 1 | Bla | 0x00000000000007D1 |
| 2 | 1 | BlaBla | 0x00000000000007D2 |
| 3 | 1 | BlaBlaBla | 0x00000000000007D3 |
| 4 | 2 | Hello | 0x00000000000007D4 |
+---------------+-------------------+-----------+--------------------+
我想编写一个 Linq 查询,它只获取每个 TransactionNumber 的最新值。考虑到上面的数据,我的查询将返回以下结果。
+---------------+-------------------+-----------+--------------------+
| TransactionId | TransactionNumber | Comment | TimeStamp |
+---------------+-------------------+-----------+--------------------+
| 3 | 1 | BlaBlaBla | 0x00000000000007D3 |
| 4 | 2 | Hello | 0x00000000000007D4 |
+---------------+-------------------+-----------+--------------------+
到目前为止,我面临的最大问题是 TimeStamp 列的类型为 byte[],我不确定如何进行字节比较。知道怎么做吗?
public class Transaction
{
// ...
[Timestamp]
public Byte[] TimeStamp { get; set; }
}
【问题讨论】:
-
U 可以将字节转换为 UInt64:BitConverter.ToUInt64(byteArray, 0),我不知道它是什么类型,但如果值不是,它看起来不像双精度正确,您应该尝试重新排序字节(Big and Little Endian)
标签: c# .net entity-framework entity-framework-5