LINQ如果一个属性等于x,则返回另一个属性的值

马特·F

成员
已加入
2020年12月26日
留言内容
7
编程经验
Beginner
我有一个对象的构造函数,我正在尝试查询使用LINQ的实例化。当一个属性具有给定值时,我需要返回另一个属性的值

我的构造函数如下:

公共Job(字符串organizationType,字符串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;
}

几个模拟实例如下所示:

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

到目前为止,我的查询看起来像这样(尽管显然不能正常工作):

int jobStepNodeCountForJob = JobList.Where(j =>j.LevelNumber == 1)。其中(j =>j.JobNumberOnLevel == 2).Select(;

任何帮助,将不胜感激
 
Solution
指定哪个属性 Select(j => j.TheProperty)
如果您只希望使用FirstOrDefault方法的第一个结果,则查询可能返回多个结果,并且始终是IEnumerable(如果没有结果,则First会引发异常)
您还只需要使用其中一个,您可以在其中添加多个表达式&& operator.

约翰·H

C#论坛主持人
工作人员
已加入
2011年4月23日
留言内容
1,076
地点
挪威
编程经验
10+
指定哪个属性 Select(j => j.TheProperty)
如果您只希望使用FirstOrDefault方法的第一个结果,则查询可能返回多个结果,并且始终是IEnumerable(如果没有结果,则First会引发异常)
您还只需要使用其中一个,您可以在其中添加多个表达式&& operator.
 
解决方案

马特·F

成员
已加入
2020年12月26日
留言内容
7
编程经验
Beginner
谢谢约翰。我一直在玩Select,但似乎遇到了很多问题,使我无法正常工作。现在就可以了

var jobStepNodeCountForJob = JobList.Where(j =>j.LevelNumber == ii&&j.JobNumberOnLevel == kk).Select(j => j.StepCount);
 

跳伞

工作人员
已加入
2019年4月6日
留言内容
2,605
地点
弗吉尼亚州切萨皮克
编程经验
10+
很高兴你想出来了。另外,感谢您以文本形式而不是屏幕快照形式发布代码。现在是时候升级,并学习如何将代码以文本形式发布到代码标签中。 :)
 

约翰·H

C#论坛主持人
工作人员
已加入
2011年4月23日
留言内容
1,076
地点
挪威
编程经验
10+
最佳 底部