簡體   English   中英

如何在對列表進行分組后獲得嵌套的 json 結果?

[英]How to get a nested json result after grouping a list?

我想通過按類別、商家和優惠券對列表進行分組,將以下列表轉換為 JSON 結果(JSON 結果也如下所示)。 我嘗試使用 LINQ 查詢來解決此問題,但無法解決。

需要將以下列表轉換為 JSON 結果。

    var list = new List<Data>() { 
    new Data { categoryCode = "1", categoryName = "A", merchantId = "1", mechantName = "Shehan", voucherId = "200", voucherDescription = "Voucher - 200"}, 
    new Data { categoryCode = "1", categoryName = "A", merchantId = "1", mechantName = "Shehan", voucherId = "300", voucherDescription = "Voucher - 300"}, 
    new Data { categoryCode = "1", categoryName = "A", merchantId = "2", mechantName = "Ashen", voucherId = "200", voucherDescription = "Voucher - 200"},
    new Data { categoryCode = "2", categoryName = "B", merchantId = "1", mechantName = "Shehan", voucherId = "200", voucherDescription = "Voucher - 200"},
    new Data { categoryCode = "2", categoryName = "B", merchantId = "1", mechantName = "Shehan", voucherId = "300", voucherDescription = "Voucher - 300"},
    new Data { categoryCode = "2", categoryName = "B", merchantId = "2", mechantName = "Ashen", voucherId = "200", voucherDescription = "Voucher - 200"},
    new Data { categoryCode = "2", categoryName = "B", merchantId = "2", mechantName = "Ashen", voucherId = "300", voucherDescription = "Voucher - 300"},
};

這是列表中使用的數據 Model。

class Data
{
    public string categoryCode { get; set; }
    public string categoryName { get; set; }
    public string merchantId { get; set; }
    public string mechantName { get; set; }
    public string voucherId { get; set; }
    public string voucherDescription { get; set; }
}

需要從給定列表中獲取以下 JSON 結果。

"Data": [
   {
      "categoryCode":"1",
      "categoryName":"A",
      "merchants":[
         {
            "merchantId":"1",
            "merchantName":"Shehan",
            "vouchers":[
               {
                  "Id":"200",
                  "description":"Voucher - 200"
               },
               {
                  "Id":"300",
                  "description":"Voucher - 300"
               }
            ]
         },
         {
            "merchantId":"2",
            "merchantName":"Ashen",
            "vouchers":[
               {
                  "Id":"200",
                  "description":"Voucher - 200"
               }
            ]
         }
      ]
   },
   {
      "categoryCode":"2",
      "categoryName":"B",
      "merchants":[
         {
            "merchantId":"1",
            "merchantName":"Shehan",
            "vouchers":[
               {
                  "Id":"200",
                  "description":"Voucher - 200"
               },
               {
                  "Id":"300",
                  "description":"Voucher - 300"
               }
            ]
         },
         {
            "merchantId":"2",
            "merchantName":"Ashen",
            "vouchers":[
               {
                  "Id":"200",
                  "description":"Voucher - 200"
               },
               {
                  "Id":"300",
                  "description":"Voucher - 300"
               }
            ]
         }
      ]
   }
]

如果您能提供幫助,我將不勝感激。 :)

我認為你可以通過這種方式做到這一點:

 var result = list.GroupBy(x => new { x.categoryCode, x.categoryName })
                .Select(x => new
                {
                    x.Key.categoryCode,
                    x.Key.categoryName,
                    Merchants = x.ToList().GroupBy(g => new { g.merchantId, g.mechantName })
                        .Select(v => new
                        {
                            v.Key.merchantId,
                            v.Key.mechantName,
                            vouchers = v.Select(s => new { Id = s.voucherId, description = s.voucherDescription })
                                .ToList()
                        })
                });

            var json = JsonConvert.SerializeObject(result);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM