在LINQ的枚举字节[]比较(Byte[] comparison in Linq enumerabl

2019-10-29 05:33发布

我试图检索SQL记录中,其中rowversion大于一定值时。 在SQL这是微不足道的(WHERE RowVersion> X),然而不那么在动态LINQ查询。

在我的EF模型我已经申请时间戳注释到相应的列。

[Timestamp]
public byte[] RowVersion { get; set; }

和所使用的静态比较的字节[]比较扩展(源:( https://stackoverflow.com/a/42502969/3424480 )

static class MiscExtension
{
    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);
    }
}

我试过,没有运气下面的风格动态LINQ表达式(maxRV是小端字节[])。

.Where("RowVersion.Compare(@0) > 0", maxRV);

这将引发“不适用聚合方法‘比较’存在”一些经过研究我认为这是因为“比较”是不是有效的枚举法。 在那里我可能出现了问题/替代方法任何指针赞赏。

文章来源: Byte[] comparison in Linq enumerable