如何根据C#中的条件合并两个具有不同属性的列表

玛格琳

我有两个列表-具有不同属性的计划和部门..示例数据:


    {
        "plans": [
            {
                "planCode": "A",
                "planShortName": "Apple",
                "planType": null,
                "bisPlanCode": "878",

            },
            {
                "planCode": "B",
                "planShortName": "Ball",
                "planType": null,
                "bisPlanCode": "536",

            }
        ],
        "divisions": [
            {
                "planCode": "878",
                "divisions": [
      { divisionCode: "2", divisionName: "test2" }, 
            { divisionCode: "1", divisionName: "test1" }]
            },
            {
                "planCode": "536",
                "divisions": [
      { divisionCode: "3", divisionName: "test3" }, 
            { divisionCode: "1", divisionName: "test1" }
    ]
            }
        ]
    }

如何在C#中plan.bisPlanCode == divisions.plansCode的条件下,将这些列表计划和分区合并到一个列表计划分区中。所以最终结果应该像


     "planDivisions": [
            {
                "planCode": "A",
                "planShortName": "Apple",
                "planType": null,
                "bisPlanCode": "878",
                "divisions": [ { divisionCode: "2", divisionName: "test2" }, 
            { divisionCode: "1", divisionName: "test1" }]

            },
            {
                "planCode": "B",
                "planShortName": "Ball",
                "planType": null,
                "bisPlanCode": "536",
                "divisions": [
{ divisionCode: "3", divisionName: "test3" }, 
        { divisionCode: "1", divisionName: "test1"

 }]

            }
    ]

我试图做的是:



    List<Data> planDivisions = new List<Data>();

                    Divisions.ForEach(division =>
                    {
                        var plan = Plans.Find(p => p.PlanCode == division.PlanCode);
                        if (plan != null)
                        {
                            Data data = new Data();
                            data.DivisionData = division;
                            data.PlanData = plan;
                            planDivisions.Add(data);
                        }

                    });

有什么有效的方法吗?

克鲁迪兹

您可以使用LINQ来加入两个数据列表。在这里了解更多

class Plan {
  public int PlanCode { get; set; }
  public string PlanShortName { get; set; }
}

class Division {
  public int DivisionCode { get; set; }
  public string DivisionName { get; set; }
}

class DivisionAssignment {
  public int PlanCode { get; set; }
  public List<Division> Divisions { get; set; }
}

public static void JoinExample() {
  // do your deserialization stuff here
  List<Plan> plans = ...;
  List<DivisionAssignment> assignments = ...;

  // join the data
  var query = from plan in plans
              join assignment in assignments on plan.PlanCode equals assignment.PlanCode
              select new { PlanCode = plan.PlanCode, Divisions = assignment.Divisions };

  // reach the joined data
  foreach (var planDivision in query) {
    ... = planDivision.PlanCode;
    ... = planDivision.Divisions;
    ...
  }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

ComboBox绑定具有MVVM C#中两个不同类的两个不同属性

如何合并具有不同属性的两个对象

如何合并具有相同属性的两个不同表的值

基于共同属性的两个(或多个)列表中的C#合并属性

如何根据两个表中的两个不同属性计算排名?

密码:合并具有相同属性和不同关系的两个节点

如何比较两个具有不同属性名称的不同数组,并删除JavaScript中不匹配的数组?

如何合并两个具有相同属性的 Pandas 数据框并覆盖相同的行?

如何获得具有不同属性比较器的两个对象数组之间的差异?

如何比较具有共同属性的两个不同数组

合并两个具有Employee不同属性的数组列表以创建一个新的数组列表,将两个数组列表的属性组合在一起

如何在C#中比较两个不同类对象的相同属性?

将具有相同属性的两个对象的方法合并到每个属性的数组中

如何在 R 中合并具有不同长度和两个条件的两个数据帧?

在c#中合并两个具有相同结构的xml的属性

合并两个列表,但选择一个具有较高属性值的列表c#

如何在Ruby on Rails控制器中手动联接具有不同属性名称的两个不同表

Python 3:合并具有不同属性的对象列表

有两个具有相同属性的不同库-Swing

在具有相同属性的两个不同对象上使用equal()方法

根据C#中的对象列表中不同属性的值组合某个属性的值?

合并两个不同的列表,然后按C#上的公共属性排序?

如何合并具有不同变量类型的两个列表

在R中合并两个具有不同结构的列表

如何有效比较C#中两个大型对象列表的属性?

如何从 OWL 中的两个不同属性中推断出某些东西?

如何在具有共同属性的两个节点之间创建关系?

如何合并两个具有字典的列表

是否有用于按属性分组并查找具有两个不同属性的组的 Ruby/Rails 子句?