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

标签 c# .net linq c#-4.0

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


    {
        "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# 中计划.bisPlanCode == Divisions.plansCode 的条件下将这些列表 - 计划和分区合并到一个列表 planDivisions 中。 所以最终结果应该是这样的


     "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 连接两个数据列表。更多关于它 here .

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;
    ...
  }
}

关于c# - 如何根据 C# 中的条件组合两个具有不同属性的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60709943/

相关文章:

asp.net - 在 ASP.NET 中管理 Entity Framework ObjectContext

.net - Entity Framework 中的通用持久方法 - 插入或更新(如果存在)实体

linq - 为什么不能从这个简单的代码中推断出类型参数?

c# - PLINQ遍历chunk分区的实现

c# - 服务器端相当于 HttpContext?

c# - 使用字符串目录填充 TreeView

c# - 电子表格档位范围公式

c# - 具有 NSubstitute 的 AutoFixture 是否可能/支持从代理接口(interface)返回自动值

c# - 如何以引用为标准进行 NHibernate 查询?

c# - 提供了无效的请求 URI。请求 URI 必须是绝对 URI,或者必须设置 BaseAddress。尝试使用网络服务