c#Lambda表达式,转换列表<;类型1>;列出<;类型2>;使用自动映射器
我一天大部分时间都在研究这个问题,不知道如何将其创建为一个简单的Lambda表达式:c#Lambda表达式,转换列表<;类型1>;列出<;类型2>;使用自动映射器,c#,lambda,C#,Lambda,我一天大部分时间都在研究这个问题,不知道如何将其创建为一个简单的Lambda表达式: public IReadOnlyList<UserActivity> GetListOfUserActivities() { List<UserActivity> userActivities = new List<UserActivity>(); List<Activity> activities = _activ
public IReadOnlyList<UserActivity> GetListOfUserActivities()
{
List<UserActivity> userActivities = new List<UserActivity>();
List<Activity> activities = _activityDataAccess.GetActivities();
foreach (var activity in activities)
{
UserActivity userActivity = _mapper.Map<UserActivity>(activity);
userActivity.Parent = this;
userActivities.Add(userActivity);
}
return userActivities;
}
public-IReadOnlyList-GetListOfUserActivities()
{
List userActivities=new List();
列出活动=_activityDataAccess.GetActivities();
foreach(活动中的var活动)
{
UserActivity UserActivity=\u mapper.Map(活动);
userActivity.Parent=this;
添加(userActivity);
}
返回用户活动;
}
简言之:
activities
.ConvertAll(act => _mapper.Map<UserActivity>(act))
.Select(uac => uac.Parent = this).ToList();
活动
.ConvertAll(act=>_mapper.Map(act))
.Select(uac=>uac.Parent=this.ToList();
但它真的不快乐 我不太明白你在用
这个
做什么,但你不能:
为UserActivity
创建一个新的构造函数,该构造函数为父对象和传入的Activity
对象获取一个参数,并在其中进行映射:
public UserActivity(Activity activity, Object parent){
this = _mapper.Map<UserActivity>(activity);
this.Parent = parent;
}
我试图表现得太聪明(或者可能不是这样):
public-IReadOnlyList-GetListOfUserActivities()
{
List userActivities=\u activityDataAccess.GetActivities().ConvertAll(act=>\u mapper.Map(act)).ToList();
userActivities.ForEach(ua=>ua.Parent=this);
返回用户活动;
}
但是考虑到Johnathan的帖子,即进一步分解问题,我意识到上面的方法是可行的,只需要将其分解为两种说法。谢谢。这个怎么样
activities
.Select(act =>
{
var userActivity = _mapper.Map<UserActivity>(act);
userActivity.Parent = this;
return userActivity;
}).ToList();
活动
.选择(act=>
{
var userActivity=_mapper.Map(act);
userActivity.Parent=this;
返回用户活动;
}).ToList();
“它真的不开心”不是一个有效的问题陈述。您能更具体地说明您遇到的错误(如果有)或困难吗?返回(IReadOnlyList)activities.ConvertAll(act=>_mapper.Map(act))。选择(uac=>uac.Parent=this.ToList();可疑的类型转换或强制转换。看看我在你问题顶部链接的重复帖子。这不是类型转换,Automapper工作得很完美。我只是想用一种工作的lambda方法来完成我在for each中所做的事情。你的原始代码不能翻译成lambda表达式,无论如何也不能直接翻译。你在比较apple我接受这个答案,因为这让我想到了下面的解决方案,如何阅读下面的内容。
public IReadOnlyList<UserActivity> GetListOfUserActivities()
{
List<UserActivity> userActivities = _activityDataAccess.GetActivities().ConvertAll(act => _mapper.Map<UserActivity>(act)).ToList();
userActivities.ForEach(ua => ua.Parent = this);
return userActivities;
}
activities
.Select(act =>
{
var userActivity = _mapper.Map<UserActivity>(act);
userActivity.Parent = this;
return userActivity;
}).ToList();