gpt4 book ai didi

c# - 如何解决 - 无法使用 Automapper 将 Generic.List 转换为 Linq.IQueryable?

转载 作者:太空狗 更新时间:2023-10-30 00:41:17 24 4
gpt4 key购买 nike

我在使用 DTO 和 EF 模型时遇到以下错误:

Unable to cast object of type 'System.Collections.Generic.List1[Project.Core.UI.Models.ContentTypes]'
to type 'System.Linq.IQueryable
1[Project.Core.UI.Models.ContentTypes]

自举:Mapper.CreateMap<ContentType, Project.Core.UI.Models.ContentTypes>();

在 OData Controller 方法中 public IQueryable<ContentTypes> Get() {...} ,使用:

var result = Mapper.Map<IQueryable<ContentType>, IQueryable<ContentTypes>>(_repository.Query().Get()
.Where(u => u.UserId == userId)
.OrderBy(o => o.Description));

我也试过以下方法,但我怀疑这也正是上面的方法:

var result =_repository.Query().Get()
.Where(u => u.UserId == userId)
.OrderBy(o => o.Description);
var dto = Mapper.Map<IQueryable<ContentType>, IQueryable<ContentTypes>>(result);
return dto;

如何为此创建适当的映射?

最佳答案

您需要了解以这种方式创建映射的事实:

Mapper.CreateMap<ContentType, Project.Core.UI.Models.ContentTypes>();

仅隐式支持这些基本通用集合类型:

IEnumerable
IEnumerable<T>
ICollection
ICollection<T>
IList
IList<T>
List<T>
Arrays

但不是IQueryable<T> .这就是你得到异常(exception)的原因。

因此你应该尝试这样做:

var dto = Mapper.Map
<IEnumerable<ContentType>,
IEnumerable<ContentTypes>>(result.AsEnumerable());
// or e.g. List/List/ToList()

关于c# - 如何解决 - 无法使用 Automapper 将 Generic.List 转换为 Linq.IQueryable?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21648040/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com