【发布时间】:2023-04-06 16:11:01
【问题描述】:
我有这行 linq
_cache = _repository.EntitiesNoTracking().Select(k => Crypto.DecryptString(k.KeyValue)).ToHashSet();
这当然行不通,因为 Linq-to-entities 不知道 Crypto.DecryptString。
所以解决方案可能是
_cache = _repository.EntitiesNoTracking().ToArray().Select(k => Crypto.DecryptString(k.KeyValue)).ToHashSet();
但是,这似乎有一个多余的ToArray()。
我认为下一个代码会更有效:
var _cache = new HashSet<string>();
foreach(var item in _repository.EntitiesNoTracking()){
_cache.Add(Crypto.DecryptString(item.KeyValue));
}
是否有某种方法可以告诉 Linq-to-entities 转换为普通的 linq,而无需额外的步骤?
【问题讨论】:
-
如果你喜欢,请使用
ToEnumerable
标签: c# linq linq-to-entities