- IStructuralComparable, Array :
byte[] rv1 = new byte[] { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x01 };
byte[] rv2 = new byte[] { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x05 };
var result = ((IStructuralComparable)rv1).CompareTo(rv2, Comparer<byte>.Default);
- BitConverter, , BitConverter ( - BitConverter.IsLittleEndian , true). , .
var i1 = BitConverter.ToUInt64(rv1.Reverse().ToArray(), 0);
var i2 = BitConverter.ToUInt64(rv2.Reverse().ToArray(), 0);
, Entity Framework , , Entity Framework , . IStructuralComparable ( BitConverter ), . Compare:
static class ArrayExtensions {
public static int Compare(this byte[] b1, byte[] b2) {
if (b1 == null && b2 == null)
return 0;
else if (b1 == null)
return -1;
else if (b2 == null)
return 1;
return ((IStructuralComparable) b1).CompareTo(b2, Comparer<byte>.Default);
}
}
EF LINQ:
var result = ctx.TestTables.Where(c => c.RowVersion.Compare(rv1) > 0).ToList();
EF Compare SQL- ( * , RowVersion > @yourVersion)