Csharp/C#教程:LINQ和AutoMapper分享


LINQ和AutoMapper

我想知道我能做些什么来让它按预期工作。 这在我的代码中工作正常:

var roles = _securityContext.Set(); var roleList = new List(); foreach (var role in roles) { roleList.Add(Mapper.Map(role)); } return roleList; 

但改为:

  var roles = _securityContext.Set(); return roles.Select(role => Mapper.Map(role)).ToList(); 

导致我以前没见过的错误:

“LINQ to Entities无法识别方法’Security.Dto.RoleDto MapRole,RoleDto’方法,并且此方法无法转换为商店表达式”

我不确定我是否能对这个’问题’做任何事情……可以说无论如何,有效的方法更具可读性……

您正在使用IQueryable ,它试图将您提供的方法转换为SQL。 显然,它不会发生,因为你正在传递与AutoMapper相关的魔法。 有一个简单的解决方案,您必须在映射之前强制执行:

 return roles.ToList().Select(role => Mapper.Map(role)).ToList(); 

[编辑]正如丹尼尔在评论中建议的那样,你总是可以通过调用AsEnumerable()并仍然推迟执行从IQueryableIEnumerable

上述就是C#学习教程:LINQ和AutoMapper分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!

 return roles.AsEnumerable().Select(role => Mapper.Map(role)).ToList(); 

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/1013092.html

(0)
上一篇 2021年12月30日
下一篇 2021年12月30日

精彩推荐