微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何编写这种复杂条件的逻辑来使用 foreach 迭代和过滤对象的集合/列表?

如何解决如何编写这种复杂条件的逻辑来使用 foreach 迭代和过滤对象的集合/列表?

我有一个 ConstructionsetTemp 对象,其结构如下:

public class ConstructionSetTemp
{           
    public string massing_type { get; set; }
    public double above_grade_wall_u_value { get; set; }
    public double roof_u_value { get; set; }
    public double floor_u_value { get; set; }
}

还有一个对象OpaqueConstructiontemp

public class OpaqueConstructionTemp
{
    public string name { get; set; }
    public string intended_surface_type { get; set; }
    public string outside { get; set; }
    public string layer_2 { get; set; }
}

我正在从excel表中提取数据并形成一个db实体对象并将其存储在db中。 ConstructionSetTemp 的 Excel 表格数据如下

enter image description here

以下数据适用于 OpaqueConstructionTemp

enter image description here

对于 ConstructionsetTemp 表中的每一行,我将 OpaqueConstructionTemp 添加为对象列表。

我有一个条件,我需要跳过 OpaqueConstructionTemp 中的一行或其他行,同时将它们添加到 buildingsetTemp。该条件基于预期的表面类型以及来自 ConstructionSetTemp 的 OpaqueConstructionTemp 和 massing_type 的名称

条件 1 :如果 OpaqueConstructionTemp 的体量类型和名称包含 steel 并且预期表面类型为 exterior 我需要使用第二行,如第二行所示图片,需要跳过第三行

条件 2:如果 OpaqueConstructionTemp 的体量类型和名称包含 mass 并且预期表面类型为 exterior,我需要使用第三行,如第二行所示图像,需要跳过第二行添加OpaqueConstructionTemp

列表

下面是我循环遍历第一个列表对象 ConstructionSetTemp 和另一个 OpaqueConstructionTemp

代码
foreach (var constructionSetTemp in constructionSetData)
{
    string massingType = constructionSetTemp.massing_type;
    foreach (var opaqueConstructionDataTemp in opaqueConstructionData)
    {
        string name = opaqueConstructionDataTemp.name;
        string intended_surface_type = opaqueConstructionDataTemp.intended_surface_type
        // here i need to skip the rows based on these variables
    }
}      

我知道我可以使用 continue 跳过当前行并执行下一行,但在这里我也需要根据条件跳过第二行,反之亦然。

我不知道如何编写条件语句以根据参数值跳过 foreach 循环内的相关行。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。