我一天的大部分时间都在研究这个,但不知道如何将其创建为一个简单的 Lambda 表达式:
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;
}
简而言之:
- 我想将 Activity 转换为 UserActivity
- 我正在使用 AutoMapper 来执行此操作;效果很好。
- 然后我想在转换后的对象中将父引用设置为此,即 UserActivities;很简单,这样我就可以使用 UserActivities 数据库访问权限为 UserActivity 提供“删除”方法。
- 然后我想返回一个 IReadOnlyList。
这是我要去的地方:
activities
.ConvertAll(act => _mapper.Map<UserActivity>(act))
.Select(uac => uac.Parent = this).ToList();
可是真的不开心啊!
最佳答案
我不太明白你在用 this
做什么,但你不能:
为 UserActivity
创建一个新的构造函数,该构造函数接受父对象和传入的 Activity
对象的参数,并在其中进行映射:
public UserActivity(Activity activity, Object parent){
this = _mapper.Map<UserActivity>(activity);
this.Parent = parent;
}
然后在 lambda 中进行选择以将对象新添加到列表中:
var userActivities = activities.Select(i => new UserActivity(i, parentObject)); // parentObject == this?
关于c# Lambda 表达式,使用 Automapper 将 list<type1> 转换为 list<type2>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53855046/