C# 将动态列转换为JSon

C# 将动态列转换为JSon,c#,.net,asp.net-mvc,json,linq,C#,.net,Asp.net Mvc,Json,Linq,使用.Net,我们目前有一个嵌套的列表模型(列表中的列表),它表示一个数据网格,因此在一个行列表中有一个列列表 即:- 其中name和age是列标题(模型中的ColumnHeader),对应关系是值(模型中的ColumnValue) Linq将如何创建它来生成返回的正确JSON 非常感谢,因为我们一直在努力解决这个问题 更新:-以下消息的示例数据 protected void Page_Load(object sender, EventArgs e) { List<List<

使用.Net,我们目前有一个嵌套的列表模型(列表中的列表),它表示一个数据网格,因此在一个行列表中有一个列列表 即:-

其中name和age是列标题(模型中的ColumnHeader),对应关系是值(模型中的ColumnValue)

Linq将如何创建它来生成返回的正确JSON

非常感谢,因为我们一直在努力解决这个问题

更新:-以下消息的示例数据

 protected void Page_Load(object sender, EventArgs e)
{
    List<List<test>> m = new List<List<test>>();
    List<test> lt = new List<test>();

   lt.Add(new test { ColumnName = "cn1", ColumnValue = "cv1" });
   lt.Add(new test { ColumnName = "cn2", ColumnValue = "cv2" });
   lt.Add(new test { ColumnName = "cn3", ColumnValue = "cv3" });
   m.Add(lt);

  lt = new List<test>();

   lt.Add(new test { ColumnName = "cn12", ColumnValue = "cv12" });
   lt.Add(new test { ColumnName = "cn22", ColumnValue = "cv22" });
   lt.Add(new test { ColumnName = "cn32", ColumnValue = "cv32" });
   m.Add(lt);


}

public class test
{
    public string ColumnName { get; set; }
    public string ColumnValue { get; set; }
}
受保护的无效页面加载(对象发送方,事件参数e)
{
列表m=新列表();
列表lt=新列表();
lt.Add(新测试{ColumnName=“cn1”,ColumnValue=“cv1”});
lt.Add(新测试{ColumnName=“cn2”,ColumnValue=“cv2”});
lt.Add(新测试{ColumnName=“cn3”,ColumnValue=“cv3”});
m、 添加(lt);
lt=新列表();
lt.Add(新测试{ColumnName=“cn12”,ColumnValue=“cv12”});
lt.Add(新测试{ColumnName=“cn22”,ColumnValue=“cv22”});
lt.Add(新测试{ColumnName=“cn32”,ColumnValue=“cv32”});
m、 添加(lt);
}
公开课考试
{
公共字符串ColumnName{get;set;}
公共字符串列值{get;set;}
}
只需序列化/返回obj

输出:

[
  {
    "cn1": "cv1",
    "cn2": "cv2",
    "cn3": "cv3"
  },
  {
    "cn12": "cv12",
    "cn22": "cv22",
    "cn32": "cv32"
  }
]

您使用的是什么json框架,例如json.net、javascriptserializer、,等等?MVC system.web.MVC.JsonResultWe中内置的一个我们正在尝试返回正确格式的Json,以便与Angle Grid一起使用,但正在努力使用Linq操作嵌套列表来创建此JS。我认为在将
列表
传递给Json方法之前,您需要将其转换为类似
列表
的格式。你试过了吗?谢谢你的回复,但不太确定创建字典列表会有什么不同?
 [
    {name: 'Moroni', age: 50},
    {name: 'Tiancum', age: 43},
    {name: 'Jacob', age: 27},
    {name: 'Nephi', age: 29},
    {name: 'Enos', age: 34}];
 ]
 protected void Page_Load(object sender, EventArgs e)
{
    List<List<test>> m = new List<List<test>>();
    List<test> lt = new List<test>();

   lt.Add(new test { ColumnName = "cn1", ColumnValue = "cv1" });
   lt.Add(new test { ColumnName = "cn2", ColumnValue = "cv2" });
   lt.Add(new test { ColumnName = "cn3", ColumnValue = "cv3" });
   m.Add(lt);

  lt = new List<test>();

   lt.Add(new test { ColumnName = "cn12", ColumnValue = "cv12" });
   lt.Add(new test { ColumnName = "cn22", ColumnValue = "cv22" });
   lt.Add(new test { ColumnName = "cn32", ColumnValue = "cv32" });
   m.Add(lt);


}

public class test
{
    public string ColumnName { get; set; }
    public string ColumnValue { get; set; }
}
var obj = m.Select(x => x.ToDictionary(y => y.ColumnName, y => y.ColumnValue))
           .ToList();
[
  {
    "cn1": "cv1",
    "cn2": "cv2",
    "cn3": "cv3"
  },
  {
    "cn12": "cv12",
    "cn22": "cv22",
    "cn32": "cv32"
  }
]