Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用每个项目循环初始化列表_C#_List - Fatal编程技术网

C# 使用每个项目循环初始化列表

C# 使用每个项目循环初始化列表,c#,list,C#,List,我试图设置对象属性的值,该属性的类型为List,并使用foreach将项目添加到列表中来初始化它,例如 var sessionPlanner = new SessionPlannerDTO() { Age = "", NumberOfPlayers = session.numberOfPlayers.Value, MedicalInformation = "", PlayerNeeds

我试图设置对象属性的值,该属性的类型为List,并使用foreach将项目添加到列表中来初始化它,例如

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,而不是手工编写映射代码。

“我正在尝试”-那么,发生了什么?你能详细说明为什么你不想这样做吗?使用Linq
Select
很容易实现这一点,但列表仍将以任何方式进行迭代。仅仅因为你可以在一个大语句中编写所有代码,并不意味着你应该这样做。“我正在尝试”-那么,会发生什么?你能详细说明为什么不想这样做吗?这很容易通过Linq
Select
实现,但列表仍将以任何方式进行迭代。仅仅因为你可以在一个大语句中编写所有代码,并不意味着你应该这样做。谢谢,不敢相信我甚至没有想到这一点。谢谢,不敢相信我甚至没有想到这一点。