繁体   English   中英

需要帮助来编写LINQ语句

[英]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);

但是从那里我不知道如何开始获取我需要的每个限制/指标的值,例如PpmAt15PercentOxygenLbPerMmBtuHHv等。

有人可以帮我完成此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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM