[英]Need help writing a LINQ statement
我有一个PermitDetails
实体/表,它与PermitDetails
表具有一对多的关系。 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度量单位相对应的值,以便可以将其分配给正确的Property。
在某些情况下,它将返回null,在其他情况下,它将返回双精度值。 例如,在PermitConstituentTypeId = 2的情况下,我的查询将为PpmAt15PercentOxygen返回92.2。 同样,无论返回的是null还是值,我都希望将该值分配给相应的属性。
我尝试过的以下语句使我在所需的PermitConstituentId上的记录匹配:
var noxRecord = CurrentPermit.PermitDetails.Where(a => a.PermitConstituentTypeId == 2);
但是从那里我不知道如何开始获取我需要的每个限制/指标的值,例如PpmAt15PercentOxygen
, LbPerMmBtuHHv
等。
有人可以帮我完成此LINQ语句或对其进行修改,以便我可以基于PermitConstituentTypeID撤回特定的限制/指标吗?
首先,我们选择第一个元素:
var noxRecord = CurrentPermit.PermitDetails
.FirstOrDefault(a => a.PermitConstituentTypeId == 2);
然后,如果它不为null,我们可以像使用对象一样使用它
if(noxRecord!=null){
noxRecord.PpmAt15PercentOxygen;// This should be 92.2
}
您已经在使用现有的Where子句获取实体(实体的集合)。 您可以遍历每个与谓词匹配的记录,并访问该对象所需的属性:
foreach(var noxRecord in CurrentPermit.PermitDetails.Where(a => a.PermitConstituentTypeId == 2)
{
var ppmAt15PercentOxygen = noxRecord.PpmAt15PercentOxygen;
}
如果您只想要一条记录,请执行本杰明·格鲁恩鲍姆(Benjamin Gruenbaum)在其答案中建议的操作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.