解决 将具有匹配属性的对象添加到列表

马特·F

成员
已加入
2020年12月26日
留言内容
7
编程经验
Beginner
我有一个对象列表,每个对象都具有从构造器构造的各种属性,如下所示:

1608986084219.png


我正在尝试形成一个列表列表,以便在“ LevelNumber”匹配的地方创建一个列表,该列表将根据按编号排序的唯一“ LevelNumber”添加到列表中。我认为下面的内容必须与我需要的内容接近:

列表<Job> JobList = new List<Job>();
JobList.Add(new Job("Owner", null, 0, "ProjectBriefCreation", 1, "ProjectOwner", 5, 2, 2));
JobList.Add(new Job("Carpentry", "GeneralContractor", 2, "Drywalling", 1, "Carpenter", 5, 2, 2));
JobList.Add(new Job("抹灰和绘画", "GeneralContractor", 2, "Plastering", 2, "Plasterer", 6, 2, 2));
JobList.Add(new Job("抹灰和绘画", "GeneralContractor", 2, "Painting", 3, "Painter", 8, 2, 2));
JobList.Add(new Job("GeneralContractor", "Owner", 1, "ProjectManagement", 1, "ContractsManager", 7, 2, 2));
JobList.Add(new Job("DesignContractor", "Owner", 1, "DesignManagement", 1, "DesignContractsManager", 7, 2, 2));
JobList.Add(new Job("建筑实践", "DesignContractor", 1, "BuildingDesign", 1, "LeadArchitect", 7, 2, 2));
JobList.Add(new Job("结构工程实践", "DesignContractor", 1, "StructuralDesign", 1, "StructuralEngineer", 7, 2, 2));

List<List<Job>>jobsPerLevelList =新列表<List<Job>>();
List<int>uniqueLevelNumber =新列表<int>();
uniqueLevelNumber.AddRange(JobList.Select(x =>x.LevelNumber).Distinct()。ToList());
foreach(variableLevelNumber中的var Level)
{
如果(Job.LevelNumber。)
{
jobsPerLevelList.Add(新列表<Job>(Job.LevelNumber));
}

}

我似乎不太能完成/工作。任何意见,将不胜感激。
 
Last edited:
Solution
Linq分组似乎是您应该研究的内容。如果您发布的是代码而不是图像,那么举个例子会更容易。

像这样的邮政编码:
insertcode.png

约翰·H

C#论坛主持人
工作人员
已加入
2011年4月23日
留言内容
1,076
地点
挪威
编程经验
10+
Linq分组似乎是您应该研究的内容。如果您发布的是代码而不是图像,那么举个例子会更容易。

像这样的邮政编码:
insertcode.png
 
解决方案

马特·F

成员
已加入
2020年12月26日
留言内容
7
编程经验
Beginner
谢谢约翰。我没有使用Link的经验。如果有时间显示示例的外观,则代码如下所示:
C#:
public class Job
    {
        public Guid Record { get; set; }
        public string JobName { get; set; }
        public string JobExecutor { get; set; }
        public string OrganisationType { get; set; }
        public string ContractingOrganisationType { get; set; }
        public string CustomInput { get; set; }
        public int StepNumber { get; set; }
        public string StepName { get; set; }
        public int StepCount { get; set; }
        public int CustomInputCount { get; set; }
        public int CustomOutputCount { get; set; }
        public int LevelNumber { get; set; }
        public int JobNumberOnLevel { get; set; }
        public string GenericInputType { get; set; }
        public string GenericInputDescription { get; set; }
        public string CustomOutput { get; set; }

        public Job(string organisationType, string contractingOrganisationType, int levelNumber, string jobName, int jobNumberOnLevel, string jobExecutor, int stepCount, int customInputCount, int customOutputCount)
        {
            OrganisationType = organisationType;
            ContractingOrganisationType = contractingOrganisationType;
            LevelNumber = levelNumber;
            JobName = jobName;
            JobNumberOnLevel = jobNumberOnLevel;
            JobExecutor = jobExecutor;
            StepCount = stepCount;
            CustomInputCount = customInputCount;
            CustomOutputCount = customOutputCount;
        }
谢谢,
马特
 
由主持人最后编辑:

跳伞者

工作人员
已加入
2019年4月6日
留言内容
2,605
地点
弗吉尼亚州切萨皮克
编程经验
10+

约翰·H

C#论坛主持人
工作人员
已加入
2011年4月23日
留言内容
1,076
地点
挪威
编程经验
10+
没错,请尝试使用OrderBy和GroupBy做到这一点。
 
最佳 底部