Linq-To-Entitiesを使用してSQLServer2008R2データベースにクエリを実行したいと思います。
私はEntityFramework4.1(Code-First)
を使用しており、クエリはエンティティのハッシュ値を次のようにパラメーターと比較する必要があります。
myContext.Messages.Where(m => HashCode(m.MessageId) % 10000 == myValue)
ただし、EFプロバイダー用に定義されたコア拡張メソッドとCLRメソッドしか使用できません。そのため、実行直前にL2Eが理解できるメソッド
に変換しようとしています。HashCode()
参考までに、HashCodeの実装は複雑ではありません。何かのようなもの:
public int HashString(string text)
{
int hash = 23;
foreach (char c in text)
{
hash = hash * 31 + c;
}
return hash;
}
すべてのエンティティを列挙可能として取得し、コード(Linq To Objects)で確認できることはわかっていますが、その方法で取得しようとしているデータの量を考えると、これは大変なことです。
それはまったく実行可能ですか(GetHashCode
メソッドの場合)。もしそうなら、どうすればそれを実装できますか?
ありがとうございました。