c# - 过滤时自动映射器映射异常
问题描述
C#初学者在这里,我只想看到经理与当前用户年龄相同的设施。
出于某种原因,当我使用此代码发布我的网站并尝试查看设施时,我收到一个很长的错误,指出:
***Unable to retrieve facilities from the server. Errors: "error: AutoMapper.AutoMapperMappingException: Error mapping types. Mapping types: WhereListIterator`1 -> IEnumerable`1 System.Linq.Enumerable+WhereListIterator`1[ ***
这是功能:
[HttpGet]
public async Task<IACtionResult> GetFacilities(int page, int pagesize){
var facilities = await _facilityService.GetAllfacilitiesAsync(page, pagesize);
var curr_Age = (int)HttpContext.User.GetAge();
facilities = facilities.Where(facility => facility.Manager.Age == curr_Age);
var model = _mapper.Map<IEnumerable<FacilityViewModel>>(facilities);
return OK(model);
}
当我不按年龄过滤时,查看所有设施没有问题,所以我不知道这个问题的原因是什么?
解决方案
问题是由多次使用 IEnumerable 引起的。IEnumerable 可能的多重枚举
您可以通过简单地在=>.ToList()
之后添加来修复它。.Where(...)
facilities = facilities.Where(...).ToList();
推荐阅读
- amazon-web-services - AWS 弹性 IP 地址弹性的最佳实践是什么?
- kubernetes - 在纯 IPv6 环境中使用 Ignite TcpDiscoveryKubernetesIpFinder
- html - 文本对齐太低
- python - 修复 ScatterPlot 中“x”轴值的 OverLap - MatPlotLib
- python - Numba:没有实现函数 Function(
) 找到签名: - c++ - 如何检查输入变量是否等于多个值中的任何一个?C++
- html - 无法在具有 3 个 div 框和 flexbox 的容器上方的 div 中移动文本
- javascript - 当我们单击按钮时,如果第一个函数显示 alert_box,则阻止第二个函数的执行,否则执行它
- spring-boot - JUnit 测试:拆卸导致 NullPointerExceptions
- regex - 如果有特定前缀,如何忽略正则表达式匹配