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;
工作Name = jobName;
工作NumberOnLevel = jobNumberOnLevel;
工作Executor = jobExecutor;
StepCount = stepCount;
CustomInputCount = customInputCount;
CustomOutputCount = customOutputCount;
}

几个模拟实例如下所示:

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

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

int jobStepNodeCountForJob = 工作List.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,028
地点
挪威
编程经验
10+
指定哪个属性 Select(j => j.TheProperty)
如果您只希望第一个结果使用FirstOrDefault方法,则查询可能返回多个结果,并且始终是IEnumerable(如果没有结果,则First将引发异常)
您还只需要使用其中一个,您可以在其中添加多个表达式&& operator.
 

马特·F

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

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

跳伞

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