2

我有一个与表具有一对多关系的 Permits 实体/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 度量单位对应的值,以便可以将其分配给正确的属性。

在某些情况下,它会返回一个空值,而在其他情况下,它会返回一个双精度值。例如,在 PermitConstituentTypeId = 2 的情况下,我的查询将为 PpmAt15PercentOxygen 返回 92.2。同样,无论返回的是 null 还是值,我都想将值分配给相应的属性。

我尝试过的这个语句让我得到了我想要的 PermitConstituentId 上的记录匹配:

var noxRecord = CurrentPermit.PermitDetails.Where(a => a.PermitConstituentTypeId == 2);

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

有人可以帮我完成这个 LINQ 语句或修改它,以便我可以根据 PermitConstituentTypeID 拉回特定的限制/指标吗?

4

2 回答 2

5

首先,我们选择第一个元素:

var noxRecord = CurrentPermit.PermitDetails
                            .FirstOrDefault(a => a.PermitConstituentTypeId == 2);

然后如果它不为null,我们可以像对象一样使用它

if(noxRecord!=null){
    noxRecord.PpmAt15PercentOxygen;// This should be 92.2
}
于 2013-06-13T19:00:31.057 回答
2

您已经使用现有的 Where 子句获取实体(嗯,实体的集合)。您可以遍历与谓词匹配的每条记录并访问该对象所需的属性:

foreach(var noxRecord in CurrentPermit.PermitDetails.Where(a => a.PermitConstituentTypeId == 2)
{
    var ppmAt15PercentOxygen = noxRecord.PpmAt15PercentOxygen;
}

如果您只想要一张唱片,请按照 Benjamin Gruenbaum 在回答中的建议进行操作。

于 2013-06-13T19:06:16.627 回答