【发布时间】:2015-03-09 12:27:05
【问题描述】:
我正在使用 LINQ to Entity 并收到错误
方法不能被翻译成存储表达式
var myStrings = from keys in keyTable
join values in valuesTable
on keys.ID equals values.FK_TableKey
select new NewModel
{
Value = values.Value,
Hash = CalculateHash(string.Format("{0}_{1}", keys.Key, keys.Context))
};
//我尝试将in转换为如下所示的LINQ语法
//如何计算适用于LINQ to Entity的Hash值?
//方法
public string CalculateHash(string input)
{
if (input == null)
return null;
//calculate MD5 hash
var md5 = System.Security.Cryptography.MD5.Create();
byte[] inputBytes = System.Text.Encoding.UTF8.GetBytes(input);
byte[] hash = md5.ComputeHash(inputBytes);
var sb = new StringBuilder();
foreach (byte t in hash)
sb.Append(t.ToString("P2"));
return sb.ToString();
}
【问题讨论】:
-
这是不可能的,你必须在计算哈希之前调用 ToList()。
-
@JenishRabadiya 是否与下面的答案相同?请详细说明?
标签: c# linq entity-framework linq-to-entities linq-to-objects