我有一个与PermitDetails
表有一对多关系的Permits实体/表。 PermitDetails
包含有关“许可证”表中所列气体限制的信息。限制以特定单位表示(GPerBhpHr,LbPerHr等...)。
我有一组属性,我的视图是数据绑定到(WPF / MVVM),代表每个PermitConstituentType及其相应的“限制”。例如:
// this set of properties is duplicated for each gas type (PermitConstiutentType)
public double NitrousOxidesPpmAt15PercentOxygen {get; set;}
public double NitrousOxidesLbMmbtuHHV {get; set;}
public double NitrousOxidesGbhph {get; set;}
public double NitrousOxidesC3LbHr {get; set;}
public double NitrousOxidesTpy {get; set;}
使用EF / LINQ我想查询PermitDetails表,并为每个PermitConstituentType返回与PermitDetails度量单位对应的值,以便将其分配给正确的属性。
在某些情况下,它将返回null,在其他情况下,它将返回double值。例如,在PermitConstituentTypeId = 2的情况下,我的查询将为PpmAt15PercentOxygen返回92.2。同样,无论它是返回的null还是我想将值赋给相应属性的值。
我试过的这句话让我得到了我想要的PermitConstituentId上的记录匹配:
var noxRecord = CurrentPermit.PermitDetails.Where(a => a.PermitConstituentTypeId == 2);
但是从那里我不知道如何开始获取我需要的每个限制/指标的值,例如PpmAt15PercentOxygen
,LbPerMmBtuHHv
等。
有人可以帮我完成这条LINQ语句或修改它,以便我可以根据PermitConstituentTypeID撤回特定的限制/指标吗?
答案 0 :(得分:4)
首先,我们选择第一个元素:
var noxRecord = CurrentPermit.PermitDetails
.FirstOrDefault(a => a.PermitConstituentTypeId == 2);
然后,如果它不是null,我们可以像对象一样使用它
if(noxRecord!=null){
noxRecord.PpmAt15PercentOxygen;// This should be 92.2
}
答案 1 :(得分:1)
您已经使用现有的Where子句获取实体(以及实体的集合)。您可以遍历与谓词匹配的每个记录,并访问该对象所需的属性:
foreach(var noxRecord in CurrentPermit.PermitDetails.Where(a => a.PermitConstituentTypeId == 2)
{
var ppmAt15PercentOxygen = noxRecord.PpmAt15PercentOxygen;
}
如果您只想要一条记录,那就做Benjamin Gruenbaum在答案中建议的那样。