Linq枚举中的Byte []比较

时间:2019-01-25 20:39:28

标签: c# arrays linq dynamic-linq rowversion

我正在尝试检索rowversion大于特定值的SQL记录。在SQL中,这很简单(WHERE RowVersion> x),但是在Dynamic Linq查询中却并非如此。

在我的EF模型中,我已将Timestamp注释应用于相应的列。

[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);

这将引发“不存在适用的聚合方法'比较'”,经过一些研究后,我认为这是因为“比较”不是有效的可枚举方法。任何有关我可能出问题的地方/其他方法的提示。

0 个答案:

没有答案