【问题标题】:C# how to write a multidimensional arrayC#如何写一个多维数组
【发布时间】:2020-10-07 17:16:52
【问题描述】:

我正在尝试按照本教程了解如何将数组绑定到网格视图: Binding Arrays to GridView in ASP.Net

这很容易理解,但我的数组结构看起来与示例中的不同。我想知道如何编写一个如下所示的数组:

{
  "users": [
    {
      "name": "aldo",
      "email": "aldo@email.com"
    },
    {
      "name": "matias",
      "email": "matias@email.com"
    }
  ]
}

任何帮助都会很棒。

谢谢你, 伊拉斯莫

【问题讨论】:

  • 您在寻找类结构吗?如何显示它?你能展示一下你到目前为止所做的尝试吗?

标签: c# asp.net arrays


【解决方案1】:

首先要说的是,这不是一个多维数组。它是User 对象的数组。在 C# 中,您可以像这样实现它。

public class User
{
     public string Name {get; set;}
     public string Email {get; set;}
}

List<User> users = new List<User>
{
    new User { Name = "aldo", Email ="aldo@email.com"},       
    new User { Name = "matias", Email ="matias@email.com"}
}

这将生成您在序列化时显示的 JSON。

需要注意的一点是,C# 使用 Pascal 大小写(Name,Ema​​il),而 JavaScript 和您的 JSON 使用 Camel 大小写(n 姓名,电子邮件邮件)。

一些 JSON 序列化程序(例如用于 .NET Core WebAPI 的序列化程序)会自动进行这种转换,但另一些则不会,因此您可能必须在一种或另一种语言中使用不适当的约定。

【讨论】:

    【解决方案2】:

    我使用了您提到的教程中的代码并对其进行了修改以满足您的要求:

    <asp:GridView ID="GridMultiD" runat="server"
        AutoGenerateColumns = "false" Font-Names = "Arial"
        Font-Size = "11pt" AlternatingRowStyle-BackColor = "#C2D69B" 
        HeaderStyle-BackColor = "green" AllowPaging ="true"  
        PageSize = "10" Caption = "Multi-Dimensional Array" >
       <Columns>
        <asp:BoundField ItemStyle-Width = "150px"
         DataField = "Name" HeaderText = "Name" />
        <asp:BoundField ItemStyle-Width = "150px"
         DataField = "Email" HeaderText = "Email" />
       </Columns>
    </asp:GridView>  
    
    //Multi-Dimensional Array
    string[,] arrMultiD = {
                        { "aldo", "aldo@email.com" },
                        { "matias", "matias@email.com"}
                     };
    DataTable dt = new DataTable();
    dt.Columns.Add("Name", Type.GetType("System.String"));
    dt.Columns.Add("Email", Type.GetType("System.String"));
    
    for (int i = 0; i < 2; i++)
    {
        dt.Rows.Add();
        dt.Rows[dt.Rows.Count - 1]["Name"] = arrMultiD[i, 0];
        dt.Rows[dt.Rows.Count - 1]["Email"] = arrMultiD[i, 1];
    
    }
    GridMultiD.DataSource = dt;
    GridMultiD.DataBind(); 
    

    【讨论】:

    • 谢谢你的例子。我正在努力实施它,我不是很有经验,所以我需要比你更长的时间来理解和理解我需要做什么。我会在完成后尽快更新这个问题,或者如果我有问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-04
    • 2014-12-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多