我有一个复杂的查询。像LINQ Query查询优化
我想检查一个项目是否存在于基于密钥和值的List (softwareLicencesList)
内。但是,softwareLicencesList
内的数据是加密的。所以首先我想解密它,然后在Dictionary (dict)
内部查找以获得映射值,然后验证映射值与hardwareInfo Keys
(hardwareInfo is a Dictionary which stores machine hardware information)
。一旦密钥验证后,我想匹配的价值。
我写了下面这段代码来做到这一点。那么这段代码的作品,但我想知道它是否可以进一步优化。
foreach (var i in hardwareInfo)
{
if (!softwareLicencesList.Exists(x => dict.FirstOrDefault(y => y.Key == Crypt.Decrypt(x.Key, "Encryption Key")).Value == i.Key
&& Crypt.VerifyHash(i.Value, "MD5", x.Value)))
{
//Do Something
}
}
Crypt.Decrypt()
解密和验证哈希Crypt.VerifyHash()
的过程是复杂的。所以我想尽量减少对这些功能的调用次数。
为什么你要解密整个列表?加密您的密钥,并在列表中搜索它 – dotctor
您的评论给了我一个想法,在字典Dictionary中保存加密值进行映射。所以......这样我就可以节省解密所需的时间,并且可以直接映射Dictionary中存在的加密密钥。 非常感谢! :) –