У меня есть простая веб-страница, используемая для ввода данных (построена с использованием .NET 4.5 и EF5). Каждый раз, когда пользователь обновляет запись, создается новая строка со значением TimeStamp, большим, чем предыдущая строка, которая была вставлена (SQL Server гарантирует это).Выбор последней записи с использованием столбца TimeStamp
В БД исходные данные выглядят следующим образом. Короче говоря, данные означают, что TransactionNumber = 1 был добавлен один раз, а затем обновлен два раза.
+---------------+-------------------+-----------+--------------------+
| TransactionId | TransactionNumber | Comment | TimeStamp |
+---------------+-------------------+-----------+--------------------+
| 1 | 1 | Bla | 0x00000000000007D1 |
| 2 | 1 | BlaBla | 0x00000000000007D2 |
| 3 | 1 | BlaBlaBla | 0x00000000000007D3 |
| 4 | 2 | Hello | 0x00000000000007D4 |
+---------------+-------------------+-----------+--------------------+
Я хотел бы написать запрос Linq, который получит только последнее значение для каждого номера транзакции. Учитывая приведенные выше данные, мой запрос вернет следующий результат.
+---------------+-------------------+-----------+--------------------+
| 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), я не знаю, какой он тип, но не выглядит как double, если значения неверны, вы должны попробовать для изменения порядка байтов (Big and Little Endian) –