将数据表合并为具有条件 asp.net Web API 的 JSON 数组

问题描述 投票:0回答:1

我有两个数据表

DataTable dt1
DataTable dt2

dt1
充满了产品,
dt2
充满了产品口味。 两个表都有一个共同的 ID,即
productcode

使用 newtonsoft JSON 序列化器,我得到的响应为:

{
  "products": [
    {
      "productcode": 1676,
      "type": "BEER BOTTLE-24*325ML",
      "image_url": "http://localhost/images/temp.png"
    },
    {
      "productcode": 1677,
      "type": "RED FIGHTER CAN-24*250ML",
      "image_url": "http://localhost/images/temp.png"
    },
    {
      "productcode": 1678,
      "type": "POWER ENERGY CAN 24*330ML",
      "image_url": "http://localhost/images/temp.png"
    }
  ]
}

{
  "flavor": [
    {
      "productcode": 1676,
      "ProductFlavorID": 9351,
      "Flavor": "APPLE"
    },
    {
      "productcode": 1676,
      "ProductFlavorID": 9352,
      "Flavor": "STRAWBERY"
    },
    {
      "productcode": 1673,
      "ProductFlavorID": 9353,
      "Flavor": "respery"
    },
    {
      "productcode": 1678,
      "ProductFlavorID": 9354,
      "Flavor": "RUMMAN"
    }
  ]
}

我需要加入这个jsons,条件是json1 Productid= json2 ProductID,结果如下

{
  "products": [
    {
      "productcode": 1676,
      "type": "BEER BOTTLE-24*325ML",
      "image_url": "http://localhost/images/temp.png",
      "flavor": [
        {
          "productcode": 1676,
          "ProductFlavorID": 9351,
          "Flavor": "APPLE"
        },
        {
          "productcode": 1676,
          "ProductFlavorID": 9352,
          "Flavor": "STRAWBERY"
        }
      ]
    },
    {
      "productcode": 1677,
      "type": "RED FIGHTER CAN-24*250ML",
      "image_url": "http://localhost/images/temp.png",
      "flavor": [
        {
          "productcode": 1677,
          "ProductFlavorID": 9353,
          "Flavor": "respery"
        }
      ]
    },
    {
      "productcode": 1678,
      "type": "POWER ENERGY CAN 24*330ML",
      "image_url": "http://localhost/images/temp.png"
    }
  ]
}

我怎样才能实现这个目标?

c# asp.net json asp.net-web-api
1个回答
1
投票

您可以使用 linq 解决这种情况,在迭代每个产品时,您可以通过使用Where 方法进行过滤来设置 dt2 的风味。

简单的例子是这样的:

using System.Linq;

products.ForEach(p => {
    p.flavors = flavors.Where(f => f.productcode == product.productcode).ToList();
});

哪里方法

© www.soinside.com 2019 - 2024. All rights reserved.