C# 可以自动映射项目()。到<;T>;是否按每次通话进行定制?
我有一个简单的EF查询,它需要作为ODataWebAPI控制器的IQueryable传递回客户端 我所做的查询如下所示:C# 可以自动映射项目()。到<;T>;是否按每次通话进行定制?,c#,asp.net-mvc,odata,automapper,iqueryable,C#,Asp.net Mvc,Odata,Automapper,Iqueryable,我有一个简单的EF查询,它需要作为ODataWebAPI控制器的IQueryable传递回客户端 我所做的查询如下所示: var query = _context.Diary .Where(bd => bd.EventStart < DateTime.Now) .Project() .To<FeedbackViewModel>(); var query
var query = _context.Diary
.Where(bd => bd.EventStart < DateTime.Now)
.Project()
.To<FeedbackViewModel>();
var query=\u context.Diary
.Where(bd=>bd.EventStart
但是,我正在尝试翻译一些未使用OData提供程序的旧代码,并将在数据库调用之后使用以下代码(大大简化):
var-mappedData=Mapper.Map(查询);
foreach(mappedData中的var反馈视图模型)
{
if(feedbackViewModel.UserId==UserId)
{
feedbackViewModel.ViewingWith=GetOtherUserDetails();
}
其他的
{
feedbackViewModel.ViewingWith=GetThisUsersDetails();
}
}
如何将
if
语句的逻辑封装到automapper投影中?也许可以帮助您?这看起来有些不同,即是否应该映射给定的属性。我需要一些东西,让我能够基于给定的规则,使用外部变量进行映射。完成您尝试执行的操作的唯一方法是,如果变量位于您尝试映射的类中。在这种情况下,你可以做一些像。。。“Mapper.CreateMap().ForMember(s=>s.BaseVar,t=>t.MapFrom(u=>BaseClassToListFeedBackViewModelFunc(b));(伪代码)能否提供当前的映射逻辑和日记类的成员?
var mappedData = Mapper.Map<List<FeedbackViewModel>>(query);
foreach (var feedbackViewModel in mappedData)
{
if (feedbackViewModel.UserId == userId)
{
feedbackViewModel.ViewingWith = GetOtherUserDetails();
}
else
{
feedbackViewModel.ViewingWith = GetThisUsersDetails();
}
}