DataTableToObject[][]_To_Json_问题请教

TianYi3G2013 2014-01-15 11:41:55


//我想要的最终Json结果为:
{
"TicketNumPercent" : [["景区01", 10], ["景区11", 20], ["景区21", 30], ["景区31", 40], ["景区41", 50]],
"SalePricePercent" : [["景区01", 0], ["景区11", 1], ["景区21", 2], ["景区31", 3], ["景区41", 4]],
"CostPricePercent" : [["景区01", 7], ["景区11", 14], ["景区21", 21], ["景区31", 28], ["景区41", 35]],
"CommissionAmountPercent" :[["景区01", 7], ["景区11", 14], ["景区21", 21], ["景区31", 28], ["景区41", 35]],
"ProfitAmountPercent" : [["景区01", 7], ["景区11", 14], ["景区21", 21], ["景区31", 28], ["景区41", 35]]
}



//DataTable:

System.Data.DataTable dTab = new System.Data.DataTable();

dTab.Columns.Add("Scence");
dTab.Columns.Add("TicketNum");
dTab.Columns.Add("TicketNumPercent");
dTab.Columns.Add("SalePrice");
dTab.Columns.Add("SalePricePercent");
dTab.Columns.Add("CostPrice");
dTab.Columns.Add("CostPricePercent");
dTab.Columns.Add("CommissionAmount");
dTab.Columns.Add("CommissionAmountPercent");
dTab.Columns.Add("ProfitAmount");
dTab.Columns.Add("ProfitAmountPercent");

System.Data.DataRow dr = dTab.NewRow();
for (int i = 0; i < 10; i++)
{
dr = dTab.NewRow();
dr["Scence"] = "景区" + i + 1;
dr["TicketNum"] = i;
dr["TicketNumPercent"] = 10 * (i + 1);
dr["SalePrice"] = i;
dr["SalePricePercent"] = i;
dr["CostPrice"] = 7 * (i + 1);
dr["CostPricePercent"] = 7 * (i + 1);
dr["CommissionAmount"] = 7 * (i + 1);
dr["CommissionAmountPercent"] = 7 * (i + 1);
dr["ProfitAmount"] = 7 * (i + 1);
dr["ProfitAmountPercent"] = 7 * (i + 1);
dTab.Rows.Add(dr);
}



//用为序列化为json的类:
public class ReportSceneClass2
{
[JsonProperty("TicketNum")]
public object[][] TicketNum { get; set; }

[JsonProperty("SalePrice")]
public object[][] SalePrice { get; set; }

[JsonProperty("CostPrice")]
public object[][] CostPrice { get; set; }

[JsonProperty("CommissionAmount")]
public object[][] CommissionAmount { get; set; }

[JsonProperty("ProfitAmount")]
public object[][] ProfitAmount { get; set; }
}


//在抽取DataTable中对应的行,列时不会处理了:。。。
public static ReportSceneClass2 ColumnsToObject(DataTable dt)
{
int arrayLength = dt.Rows.Count;
ReportSceneClass2 objReportSceneClass2 = new ReportSceneClass2();

objReportSceneClass2.TicketNum = new object[arrayLength][];

//【问题】这里怎样从dt中抽取对应的行,列赋值给ReportSceneClass2类的object[][] ?

for (int index = 0; index < arrayLength; index++)
{



}

return objReportSceneClass2;
}



如果上面的转换方式显得太笨拙了,还有其它更好的方法么?请指教!
...全文
83 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
TianYi3G2013 2014-01-23
  • 打赏
  • 举报
回复


var dt = new DataTable();
            dt.Columns.Add("c");
            dt.Columns.Add("col1");
            dt.Columns.Add("col2");
            dt.Columns.Add("col3");
            dt.Rows.Add("A", 1, 2, 3);
            dt.Rows.Add("B", 4, 5, 6);
            dt.Rows.Add("C", 7, 8, 9);
            dt.Rows.Add("D", 10, 11, 12);
            var dataList = dt.Rows.Cast<DataRow>().Select(x => new
                {
                    TicketNumPercent = new[] { x["c"], x["col1"] },
                    SalePricePercent = new[] { x["c"], x["col2"] },
                    CostPricePercent = new[] { x["c"], x["col3"] }
                }).ToList();
            var jsonModel=new { TicketNumPercent = dataList.Select(x => x.TicketNumPercent), SalePricePercent = dataList.Select(x => x.SalePricePercent), CostPricePercent = dataList.Select(x => x.CostPricePercent) };
TianYi3G2013 2014-01-15
  • 打赏
  • 举报
回复
权限过低,没法修改原文了,补充一下,更改json名称:

      //【用来序列化为json的类】:
       [JsonProperty("TicketNumPercent")]
        public object[][] TicketNumPercent { get; set; }

        [JsonProperty("SalePricePercent")]
        public object[][] SalePricePercent { get; set; }

        [JsonProperty("CostPricePercent")]
        public object[][] CostPricePercent { get; set; }

        [JsonProperty("CommissionAmountPercent")]
        public object[][] CommissionAmountPercent { get; set; }

        [JsonProperty("ProfitAmountPercent")]
        public object[][] ProfitAmountPercent { get; set; }
TianYi3G2013 2014-01-15
  • 打赏
  • 举报
回复
引用 1 楼 bdmh 的回复:
就算有,也是这么拼起来的,你做好这个类,以后用着不就方便了,多写几个字能累着啊
嗯嗯,能帮忙分析这个问题么?
//在抽取DataTable中对应的行,列时不会处理了:。。。
         public static ReportSceneClass2 ColumnsToObject(DataTable dt)
        {
            int arrayLength = dt.Rows.Count;
            ReportSceneClass2 objReportSceneClass2 = new ReportSceneClass2();
             
            objReportSceneClass2.TicketNum = new object[arrayLength][];
             
            //【问题】这里怎样从dt中抽取对应的行,列赋值给ReportSceneClass2类的object[][] ?
 
            for (int index = 0; index < arrayLength; index++)
            {
                 
 
 
            }
 
             return objReportSceneClass2;
        }
以前没用过object[][],不会处理了。。
bdmh 2014-01-15
  • 打赏
  • 举报
回复
就算有,也是这么拼起来的,你做好这个类,以后用着不就方便了,多写几个字能累着啊

111,094

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧