AutoMapper linq 鉆牛角尖

就想把查詢結果扔到AotoMapper里做轉換,研究了半天,用Tuple可以實現(xiàn)

        var messages = from p in _db.ServiceMessages
                       group p by p.ServiceID into g
                       select new
                       {
                           ServiceID = g.Key,
                           LastMessageDate = g.Max(service => service.Created)
                       };

        var results = (from p in _db.Services
                       join q in messages on p.ID equals q.ServiceID into serviceMessages
                       from s in serviceMessages.DefaultIfEmpty()
                       select new Tuple<Service, DateTime?>(p, s.LastMessageDate))


                       .ProjectTo<ServiceListDTO>(_mapper.ConfigurationProvider);
        CreateMap<Tuple<Service, DateTime?>, ServiceListDTO>()
            .ForAllMembers(opt =>
            {
                if (!opt.DestinationMember.Name.Equals("LastMessageDate"))
                {
                    opt.MapFrom($"Item1.{opt.DestinationMember.Name}");
                }
                else
                {
                    opt.MapFrom($"Item2");
                }
            });

會造成的問題:results不再是一個可擴展在Querable對象,慎用。

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容