【问题标题】:C# combine to list in json objectC# 组合到 json 对象中的列表
【发布时间】:2015-08-16 20:46:40
【问题描述】:

我有两个字符串列表:

        List<string> tmpCols = new List<string>();
        List<string> tmpRows = new List<string>();

例如tmpCols = [A,B,C];和 tmpRows = [X, Y];

我需要迭代这两个列表并获得这样的 Json 结果:

        new matrix() { id = "1", col = "A", row = "X" });
        new matrix() { id = "2", col = "B", row = "X" });
        new matrix() { id = "3", col = "C", row = "X" });
        new matrix() { id = "4", col = "A", row = "Y" });
        new matrix() { id = "5", col = "B", row = "Y" });
        new matrix() { id = "6", col = "C", row = "Y" });

本例中的维度为 2 行 3 列。

【问题讨论】:

  • 您是否尝试过任何方法来解决您的问题?有代码吗?
  • 我尝试使用两个基本的 for 循环但没有成功。
  • 请发布您尝试的代码。也许人们可以帮助您找出问题所在。

标签: c# json


【解决方案1】:

这是一个嵌套循环的教科书示例。循环可以包含其他循环,其中内部循环针对外部循环的每个元素重复。这个可能看起来像:

var result = new List<matrix>();
var count = 1;
foreach (var r in tmpRows)
    foreach (var c in tmpCols)
        result.Add(new matrix { id = (count++).ToString(), col = c, row = r });

【讨论】:

    【解决方案2】:

    我认为这是一个迟到的答案

    需要迭代这两个列表并获得这样的 Json 结果:

    它不是 json,我猜你想要这样的东西

    List<string> tmpCols = new List<string>() { "A", "B", "C" };
    List<string> tmpRows = new List<string>() { "X", "Y" };
    
    var query = tmpCols.SelectMany(c => tmpRows.Select(r => new {id=index++, col=c, row = r }));
    var json = JsonConvert.SerializeObject(query, Newtonsoft.Json.Formatting.Indented);
    Console.WriteLine(json);
    

    输出:

    [
      {
        "id": 6,
        "col": "A",
        "row": "X"
      },
      {
        "id": 7,
        "col": "A",
        "row": "Y"
      },
      {
        "id": 8,
        "col": "B",
        "row": "X"
      },
      {
        "id": 9,
        "col": "B",
        "row": "Y"
      },
      {
        "id": 10,
        "col": "C",
        "row": "X"
      },
      {
        "id": 11,
        "col": "C",
        "row": "Y"
      }
    ]
    

    【讨论】:

      【解决方案3】:

      使用此代码解决:

              var tmpMatrix = new List<matrix>();
      
              for (int k = 0; k < tmpRows.Count; k++)
              {
      
                  for (int j = 0; j < tmpCols.Count; j++)
                  {
                      int ident = k*tmpCols.Count + j;
                      tmpMatrix.Add(new matrix() { id = ident.ToString(), col = tmpCols[j], row = tmpRows[k] });
                  }
      
              }
      

      【讨论】:

      • 与 json 无关。
      • @EZI 那是因为这个问题与 JSON 无关
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-15
      • 2022-10-15
      • 1970-01-01
      • 2019-03-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多