我想使用 Linq-To-Entities 对我的 SQL Server 2008 R2 数据库进行查询。
我使用实体框架 4.1(代码优先)
,查询必须将实体的散列值与参数进行比较,如下所示:
myContext.Messages.Where(m => HashCode(m.MessageId) % 10000 == myValue)
但是我只能使用为 EF 提供者定义的核心扩展方法和 CLR 方法。
因此,我试图将我的HashCode()
方法转换为 L2E 在执行之前能够理解的东西。
仅供参考,HashCode 的实现并不复杂。就像是:
public int HashString(string text)
{
int hash = 23;
foreach (char c in text)
{
hash = hash * 31 + c;
}
return hash;
}
我知道我可以将所有实体作为可枚举检索并在我的代码(Linq To Objects)中检查它们,但考虑到我要以这种方式检索的数据量,这是一场灾难。
它是否可行(对于GetHashCode
方法)。如果是这样,我该如何实施?
谢谢你。