0

我在使用 Automapper 的 C# MVC 项目中有以下代码,但我需要它返回要由 Jquery Datatables 处理的数组数组。

我目前已经使用如下详述的 Linq 解决方案完成了它,但想知道是否有使用 Automapper 的解决方案?

自动映射器

Mapper.CreateMap<Job, IndexJobViewModel>()
    .ForMember(jvm => jvm.JobNumberFull,
    expression => expression.ResolveUsing(j => string.Format("{0}-{1}-{2}", j.JobNumberPrefix, j.JobNumber, j.JobNumberYear)));

LINQ

 var jobs = db.Jobs.AsEnumerable()
     .Select(j => new[] 
     { 
         j.JobNumber.ToString(),
         j.JobNumberYear.ToString(),
         String.Format("{0}-{1}-{2}", j.JobNumberPrefix, j.JobNumber, j.JobNumberYear),
         j.JobPriority.ToString(),
         j.EntityPriority.PriorityLevel,
         j.JobDescription
     });

return Json(new
{
   Data = jobs.ToArray()
}, JsonRequestBehavior.AllowGet);

更新

感谢 ThinTim 为我指明了正确的方向,我想出了一个可行的解决方案,尽管它并没有真正减少我的 Linq 版本的代码,只是另一种方式!我曾希望能够使用从我的 Job 模型到我的 IndexViewModel 的 AutoMapper 映射来只给我需要的字段,然后从中创建一个数组数组。

Mapper.CreateMap<Job, string[]>().ConstructUsing(
    j => new string[] 
    { 
         j.JobID.ToString(),
         j.JobNumber.ToString(), 
         j.JobNumberYear.ToString(), 
         string.Format("{0}-{1}-{2}", j.JobNumberPrefix, j.JobNumber, j.JobNumberYear), 
         j.JobPriority.ToString(), 
         j.EntityPriority.PriorityLevel,
         j.JobDescription 
     });

var jobs = db.Jobs.Where(j => j.OperationID == operationId).ToList();
var jobsArray = jobs.Select(job => Mapper.Map<string[]>(job)).ToArray();                          

return Json(new
{
Data = jobsArray
}, JsonRequestBehavior.AllowGet);
4

1 回答 1

1

这篇文章似乎有你要找的东西。

于 2013-09-20T09:35:18.980 回答