c# - c# Lambda表达式,转换列表列出使用自动映射器
问题描述
我大部分时间都在研究这个问题,但不知道如何将它创建为一个简单的 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;很简单,我可以使用 UserActivity 数据库访问来为 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?
推荐阅读
- python - 如何计算列表中值块的大小?
- python - 如何使用 Python 替换文本文件中的字符串?
- cordova - 如何使用 ionic 或 cordova 或 Angular 或 Java Scrpit 连接 Strip-terminal-physical-device BBPOS Chipper 2X BT
- ios - iOS 和 watchOS 上的本地化希伯来语日期不正确
- azure - Azure AD B2C 中的身份提供程序菜单未显示
- sql - 获取最近 90 天的记录 (SQL)
- c# - 与等效的 Webjobs 相比,队列触发的 Azure Functions 的等待时间非常长
- java - “无法执行保存操作:org.hibernate.exception.DataException:无法执行语句”使用 OpenXava?
- windows - 如果“DefineDynamicAssembly”不在 [System.AppDomain] 中,它在哪里?
- binary - (VB.NET) 如何读取二进制文件(不像 00 C8 而是 51200) - 汽车芯片调优软件