我正在尝试检索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);
这将引发“不存在适用的聚合方法'比较'”,经过一些研究后,我认为这是因为“比较”不是有效的可枚举方法。任何有关我可能出问题的地方/其他方法的提示。