C# 使用每个项目循环初始化列表
我试图设置对象属性的值,该属性的类型为List,并使用foreach将项目添加到列表中来初始化它,例如C# 使用每个项目循环初始化列表,c#,list,C#,List,我试图设置对象属性的值,该属性的类型为List,并使用foreach将项目添加到列表中来初始化它,例如 var sessionPlanner = new SessionPlannerDTO() { Age = "", NumberOfPlayers = session.numberOfPlayers.Value, MedicalInformation = "", PlayerNeeds
var sessionPlanner = new SessionPlannerDTO()
{
Age = "",
NumberOfPlayers = session.numberOfPlayers.Value,
MedicalInformation = "",
PlayerNeeds = "",
SessionDate = session.daySessionDate.Value,
Location = session.Location.locationName,
PracticeView = new List<PracticeViewDTO>(foreach(var practice in session.Sessions){
new PracticeViewDTO(){AbilityLevel = practice.ActivityPlan.abilityLevel.Value,
ActivityUrl = practice.ActivityPlan.activityUrl,
EquipmentNeeds = practice.ActivityPlan.equipmentNeeds,
FacilityNeeds = practice.ActivityPlan.activityNeeds,
HealthAndSafety = practice.ActivityPlan.healthAndSafetyIssues,
SessionTitle = practice.ActivityPlan.activityName
};
})
};
var sessionPlanner=new SessionPlannerDTO()
{
年龄=”,
NumberOfPlayers=session.NumberOfPlayers.Value,
MedicalInformation=“”,
PlayerNeds=“”,
SessionDate=session.daySessionDate.Value,
位置=session.Location.locationName,
PracticeView=新列表(foreach(会话中的var practice.Sessions){
新建PracticeViewDTO(){AbilityLevel=practice.ActivityPlan.AbilityLevel.Value,
ActivityUrl=practice.ActivityPlan.ActivityUrl,
设备需求=实践。活动计划。设备需求,
FacilityNeeds=practice.ActivityPlan.activityNeeds,
健康与安全=实践。活动计划。健康与安全问题,
SessionTitle=practice.ActivityPlan.activityName
};
})
};
PracticeView是我试图实现的目标,我将其列为一个列表,而不执行以下操作:
var practiceViewList = new List<PracticeViewDTO>();
foreach(var practice in session.Sessions)
{
var practiceX = new PracticeViewDTO()
{
AbilityLevel = practice.ActivityPlan.abilityLevel.Value,
ActivityUrl = practice.ActivityPlan.activityUrl
};
practiceViewList.Add(practiceX);
}
var practiceViewList=new List();
foreach(会话中的var练习。会话)
{
var practiceX=new PracticeViewDTO()
{
AbilityLevel=practice.ActivityPlan.AbilityLevel.Value,
ActivityUrl=practice.ActivityPlan.ActivityUrl
};
practiceViewList.Add(practiceX);
}
在对象或集合初始值设定项中不能使用除赋值以外的其他代码。因此您的foreach()
将无法编译
使用session.Sessions.Select()
将源实体映射到DTO,并使用ToList()
创建结果列表:
sessionPlanner = new SessionPlannerDTO
{
Age = "",
// ...
PracticeView = session.Sessions.Select(s =>
new PracticeViewDTO
{
AbilityLevel = s.ActivityPlan.abilityLevel.Value,
// ...
}).ToList()
};
您可能还想考虑使用AutoPAPER,而不是手工编写映射代码。
您不能使用其他代码而不是对象或集合初始化器中的赋值。因此您的foreach()
将无法编译
使用session.Sessions.Select()
将源实体映射到DTO,并使用ToList()
创建结果列表:
sessionPlanner = new SessionPlannerDTO
{
Age = "",
// ...
PracticeView = session.Sessions.Select(s =>
new PracticeViewDTO
{
AbilityLevel = s.ActivityPlan.abilityLevel.Value,
// ...
}).ToList()
};
你也可以考虑使用AutoPAPER,而不是手工编写映射代码。
“我正在尝试”-那么,发生了什么?你能详细说明为什么你不想这样做吗?使用LinqSelect
很容易实现这一点,但列表仍将以任何方式进行迭代。仅仅因为你可以在一个大语句中编写所有代码,并不意味着你应该这样做。“我正在尝试”-那么,会发生什么?你能详细说明为什么不想这样做吗?这很容易通过LinqSelect
实现,但列表仍将以任何方式进行迭代。仅仅因为你可以在一个大语句中编写所有代码,并不意味着你应该这样做。谢谢,不敢相信我甚至没有想到这一点。谢谢,不敢相信我甚至没有想到这一点。