2017-01-25 3 views
2

SHA512ハッシュを含むEFを使用してデータを挿入しています。私は、このように同じデータを探していますが、結果は返されません。エンティティフレームワークでバイト配列が比較されない

var searchHash = requestToFind.GetSelfSha512Hash(); 
    var foundRequest = _complianceContext.ScoreResults 
    .Where(sr => sr.SearchHash == searchHash); 

両方sr.SearchHashとsearchHashは[]バイトです。

Where句を取り出すと、1つの結果が得られます。これがなぜ起こっているのでしょうか?

+1

はこれを試してみてください:Convert.ToBase64String(sr.SearchHash)== Convert.ToBase64String(searchHash) – Kevin

+0

SearchHashのSQLタイプは何ですか? SQLプロファイラを使用して、実行中のSQL文を判断できますか? – Theo

答えて

5

バイト配列の場合と同じように、等価演算子は機能しません。試してくださいSequenceEqual

var foundRequest = _complianceContext.ScoreResults 
    .Where(sr => sr.SequenceEqual(searchHash)); 
+1

ドキュメントに基づいて、対応するバイトを比較する各バイト配列を1回通過します。それが大きな影響を与えるのではないかと思う。どのアプローチが最適であるかを知る唯一の方法は、プロファイルすることです。 – chadnt