gpt4 book ai didi

c# - 方法无法转换为存储表达式语法错误

转载 作者:太空狗 更新时间:2023-10-29 21:22:07 26 4
gpt4 key购买 nike

我正在使用 LINQ to Entity 并收到错误

Method cannot be translated into a store expression

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 语法

//How to calculate Hash value which will work on LINQ to Entity?

//方法

 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();
}

最佳答案

由于哈希值应该在 .NET 端计算,您可以在生成“原始数据”的部分之后添加 AsEnumerable() 调用,然后在 RDBMS 之外计算其余部分,例如这个:

var rawStrings = from keys in keyTable
join values in valuesTable
on keys.ID equals values.FK_TableKey
select new {
Value = values.Value,
keys.Key,
keys.Context
};
var myStrings = rawStrings.AsEnumerable().Select(t => new NewModel {
Value = t.Value,
Hash = CalculateHash(string.Format("{0}_{1}", t.Key, t.Context))
});

第一个查询在 RDBMS 端运行,并生成用于计算 Hash 的键和上下文。第二个查询使用原始数据计算所需的输出。

关于c# - 方法无法转换为存储表达式语法错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28941988/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com