如何在C#中动态创建变量数组

3

在我的控制器中,我使用以下代码将2个列表返回给ajax请求:

public JsonResult getdata(int seat_plane_id)
{
    int lid;
    layoutsController L = new layoutsController();
    JsonResult result = L.getlayouts(seat_plane_id);
    List<layouts> L1 = (List<layouts>)result.Data;
    List<SeatPlans>[] allUser = new List<SeatPlans>[2];
    for(int i=0; i<L1.Count; i++)   
    {
        String lid1 = L1[i].ticket_no_start;
        lid = Int32.Parse(lid1);
        allUser[i]= new List<SeatPlans>();
        allUser[i]= db.SEATPLAN.Where(d => d.layout_id == lid).ToList();
    }

    var v = new { allUser0 = allUser[0], allUser1 = allUser[1] ,allUser2= allUser[2] };
    return Json(v, JsonRequestBehavior.AllowGet);
}

我正在使用ajax请求获取返回值,代码如下:

success: function (v) {
       loadData(v.allUser0);
       loadData(v.allUser0);
    }

但我的问题是:我的allUser的大小是动态变化的(大小为L1.Count)。因此,我将获得L1.Count个列表。所以我需要动态创建var v={ }。如何做到这一点?如果您有其他解决方案,也可以接受。

1个回答

2

只需将v设置为字典即可。序列化程序将为您生成与动态对象相同的JSON。

var v = new Dictionary<string, SeatPlans>();

int id = 0;
foreach (SeatPlans sp in allUser)
{
    v.Add($"allUser{id}", sp);
    id++;
}

return Json(v, JsonRequestBehavior.AllowGet);

1
以上答案解决了问题,谢谢。现在我有一个稍微不同的要求。在数组v中,第一个或最后一个项目应该是不同类别的列表,如何实现?我还必须将列表L1(布局列表)与allUser [] 一起发送到v中。 - rakshith
请针对此问题提出一个新的问题。请提供您拥有的信息以及您遇到问题的具体位置。 - Patrick Hofman

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接