[英]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.