我有一個複雜的查詢。像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中存在的加密密鑰。 非常感謝! :) –