首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Linq- to -entities to normal linq

Linq- to -entities to normal linq
EN

Stack Overflow用户
提问于 2021-02-05 17:16:21
回答 1查看 33关注 0票数 0

我有一系列的linq

代码语言:javascript
复制
_cache = _repository.EntitiesNoTracking().Select(k => Crypto.DecryptString(k.KeyValue)).ToHashSet();

这当然不起作用,因为Linq-to-entities不知道Crypto.DecryptString。所以解决方案可能是

代码语言:javascript
复制
_cache = _repository.EntitiesNoTracking().ToArray().Select(k => Crypto.DecryptString(k.KeyValue)).ToHashSet();

然而,这里面似乎有一个冗余的ToArray()。我想下一段代码会更高效:

代码语言:javascript
复制
var _cache = new HashSet<string>();
foreach(var item in _repository.EntitiesNoTracking()){
    _cache.Add(Crypto.DecryptString(item.KeyValue));
}

有没有什么方法可以告诉Linq- to -entities转换成普通的linq,而不需要额外的步骤?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-02-05 17:26:10

您不需要EntitiesNoTracking(),因为您有自定义投影。此外,检索到的数据应该受到附加Select的限制。

代码语言:javascript
复制
_cache = _repository.
   .Select(k => k.KeyValue)
   .AsEnumerable()
   .Select(s => Crypto.DecryptString(s))
   .ToHashSet();
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66060558

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档