Automapper 地图自定义集合

2024-03-14

Hello.我有一个看起来像这样的列表:

public class PagedList<T> : List<T>
{
    public PagedList(IEnumerable<T> collection) : base(collection)
    { }
    public int TotalItems { get; set; }
    public int CurrentPage { get; set; }
    public int PageSize { get; set; }
    //some other properties
}

并在存储库中用于分页

 public PagedList<TEntity> GetPaged(int page)
 {
   var pagedEntities = some_query;
   return pagedEntities.AsPagedList(totalResults, page, pageSize);
 }

同样的 PagedList 也用于 asp mvc 视图模型中进行分页。 是否可以使用具有所有属性 TotalItems/CurrentPage/... 的 Automapper 来映射此集合?

   PagedList<DbItem> dbItems = _repository.GetPages(page);
   var viewItems = new PagedList<SomeItemView>();
   Mapper.Map(dbItems , viewItems);

谢谢 !


这对我有用。您在寻找更通用的东西吗?

public class DbItem
{
    public int Id { get; set; }
    public string Name { get; set; }
}

public class ViewItem
{
    public int Id { get; set; }
    public string Name { get; set; }
}

public class PagedList<T>: List<T>
{
    public int TotalItems { get; set; }
    public int CurrentPage { get; set; }
    public int PageSize { get; set; }
}

class Program
{
    static void Main(string[] args)
    {
        MapItems();
    }

    public static void MapItems()
    {
        Mapper.CreateMap<DbItem, ViewItem>();
        Mapper.CreateMap<PagedList<DbItem>, PagedList<ViewItem>>()
            .AfterMap((s, d) => Mapper.Map<List<DbItem>, List<ViewItem>>(s, d));

        var dbList = new PagedList<DbItem>
                         {
                             new DbItem {Id = 1, Name = "a"}, 
                             new DbItem {Id = 2, Name = "b"}
                         };
        dbList.TotalItems = 2;
        dbList.CurrentPage = 1;
        dbList.PageSize = 10;
        var viewList = Mapper.Map<PagedList<DbItem>, PagedList<ViewItem>>(dbList);

        Console.WriteLine(viewList.TotalItems);
        Console.WriteLine(viewList.CurrentPage);
        Console.WriteLine(viewList.PageSize);
        Console.WriteLine(viewList[0].Id + " " + viewList[0].Name);
        Console.WriteLine(viewList[1].Id + " " + viewList[1].Name);
        Console.ReadLine();
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Automapper 地图自定义集合 的相关文章

随机推荐

  • 如何选择帖子的最后编辑版本?

    我有一个像SO这样的问答网站 我还有一个表格 其中包含问题和答案及其编辑版本 这是我的表结构 QandA id title body related type edited id 1 title1 question content NULL
  • 为什么在此示例中使用 tmp_name

    我对 php 很陌生 我正在查看一个关于文件上传的示例 在里面getimagesize 功能 FILES file temp name 当我回显 FILES file temp name 时 它显示以下输出 C xampp tmp phpD
  • 我应该如何在 ffmpeg 中使用破折号(不是 webm_dash_manifest!)格式?

    FFmpeg 有一种名为 dash 的格式 gt ffmpeg formats E dash DASH Muxer 这大概对应于 libavformat dashenc c 中的代码 我可以在网络上找到许多有关如何使用 WebM DASH
  • WPF 图像滚动器 - 寻找行为类似于图像的控件

    在 WPF 中 实现如下图所示的控件的最佳方法是什么 你有很多图像 并不是所有的图像都能立即看到 但你可以向右和向左进行一些分页 或者滚动 我不知道如何称呼它 侧面的两个按钮左右滚动并带来新图像 如果需要滚动图像 则可以使用简单的 List
  • 不使用 Anaconda 的 Spyder 安装

    我已经在 Windows 7 上安装了 Python 3 6 32 位 有没有办法在不下载 Anaconda WinPython 等的情况下安装 Spyder 您需要运行以下命令才能安装并运行Spyder3没有蟒蛇 1 python m p
  • 如何解决 chrome 自动完成与 vuetify 中标签重叠的问题?

    当尝试使用以下命令创建登录表单时outlinedVutify 中的文本字段 chrome 自动完成功能与labels
  • 如何创建带有圆角的 NSImageView?

    目前我想创建一个圆角 NSImageView 我是新手 怎么做 我不知道这是否有效 所以请尝试一下 我们会祈祷 在 iPhone 上您可以使用CALayer of any UIView the NSViewiOS 中的对应部分 以获得圆角
  • Autofac 与 MVC4:控制器没有默认构造函数

    我一直在 MVC3 中使用 Autofac 并且喜欢它 现在我正在尝试用MVC4来实现它 我通过包管理器控制台安装了 Autofac MVC4 和 Autofac WebApi 的预发行版本 Install Package Autofac
  • JqPivot和ajax加载数据

    Can someone post a demo or a piece of code to exemplify how to use jqpivot and loading data using ajax Thank you 我建议您检查免
  • 更改 C# Parallel.For 循环的增量值

    我想使用 TPL 将每次传递将迭代器增加 2 的 for 循环转换为并行 For 循环 数据不依赖于顺序或以任何方式受到限制 但我只想处理源数组的每个其他元素中的数据 即下面代码中的 Datalist 因此需要增加 2 我的 For 循环
  • 如何在 JSF 中关闭浏览器时使会话失效

    任何人都可以帮助我在用户关闭浏览器时使会话无效 每当用户关闭浏览器时 JSF 中的会话就会自动失效 Thanks 下面的链接可能会有所帮助 浏览器窗口关闭事件 https stackoverflow com questions 163195
  • iOS 上的 Mobile Safari 在大页面上崩溃

    我遇到一个问题 当页面变得太大时 使用 jQuery 加载和操作 DOM 时 Mobile Safari 会崩溃 我在 iPhone 和 iPad 上都遇到同样的问题 排除移动页面故障以查找错误的最佳方法是什么 是否存在可能导致 Mobil
  • 每次运行后,Xcode 6 都会在 iOS8 模拟器中不断重命名我的应用程序目录。

    我正在运行 Xcode 6 Beta 5 但自从第一个 Beta 版以来这种情况就一直发生 每次运行后 我的应用程序在模拟器中的目录都会被重命名 我花了一段时间才弄清楚这一点 我用它来获取文档的目录引用 NSString folder NS
  • 当我尝试卸载包含 NSSM 服务的软件时,失败

    对于以下安装程序包 我有服务XXXService当我安装我的包时 成功安装并运行 但卸载失败并出现错误并恢复 我怀疑该服务仍在运行 阻止删除main exe file 请帮助完成卸载工作 重现此错误的完整最小源是可用的 https gith
  • 将 R 与 php 连接

    我正在尝试以 php localhost 方式运行 R 代码 所以我按照这个例子 https www r bloggers com integrating php and r https www r bloggers com integra
  • GGPlot2 中的 NLS 回归,绘制 y=Ax^b 趋势线误差

    我正在尝试在一组 3 个数据点上拟合基本幂趋势线 就像您在 Excel 中模拟 y Ax b 函数一样 我有一个非常简单的数据集加载到 LCurve data 中 如下所示 MDPT 4 10 9 51 6 曲线下面积 287069 4 2
  • Matlab 中的分组箱线图:通用函数

    在看到 SO 中这篇很棒的文章后 matlab绘制分组箱线图最有效的方法 https stackoverflow com questions 15971478 most efficient way of drawing grouped bo
  • 更改 bootstrap vue 选项卡标题的标题颜色

    I m using bootstrap vue js to create a tab The result is like this 我只想更改选项卡标题颜色 因为它使用我项目中的默认颜色 并来自 bootstrap vue js 官方链接
  • 提交时避免 PHP 中的竞争条件:请不要多次单击“提交”!

    不久前 在线应用程序曾经说过 不要多次点击提交 现在已经消失了 对吧 例如 在 PHP 中如何防范这种情况 我使用的一个解决方案是在会话中放置一个变量 这样您就不能每 10 秒多次提交到一个页面 这样数据库工作就完成了 因此可以进行正常检查
  • Automapper 地图自定义集合

    Hello 我有一个看起来像这样的列表 public class PagedList