簡體   English   中英

使用Linq2SQL中的TimeStamp列獲取增量

[英]Get a delta, using a TimeStamp Column in Linq2SQL

我需要在表上執行delta選擇(僅返回已更改的記錄,因為某個TimeStamp),並且我必須使用TimeStamp列。 在SQL中,這很容易:

@DeltaStamp TIMESTAMP

...

select *
from table
where timestamp > @DeltaStamp

在Linq2SQL中,我可以輕松獲得最大時間戳:

var maxStamp = MyTable
.OrderByDescending(x => x.TimeStamp)
.Take(1)
.FirstOrDefault().TimeStamp;

但是如何執行delta查詢?

var newRecords = MyTable
.Where(x => x.TimeStamp > maxStamp);

這不能編譯:

Operator '>' cannot be applied to operands of type 
'System.Data.Linq.Binary' and 'System.Data.Linq.Binary'

干杯。

這在L2S中是不可能的。 SQL Timestamp列不是dateTime列。 它是二進制文件,L2S將其視為二進制文件。 因此,你無法做你想做的事,至少不是“開箱即用”。 您可以按如下方式創建自己的Comparer:

public static class BinaryComparer
{
 public static int Compare(this Binary v1, Binary v2)
 {
 throw new NotImplementedException();
 }
}

var result = from row in MyTable
             where BinaryComparer.Compare(row.TimeStamp, SomeTarget) > 0
             select row;

這應該工作,或接近。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM