如何在C#中创建一个类对象的列表数组

3

以下是我的C#类

public class SeatPlans
{
    public int Id { get; set; }
    public string seat_id { get; set; }
    public string seat_no { get; set; }
    public int layout_id { get; set; }
}

我已经创建了一个类对象列表,如下所示。
List<SeatPlans> allUser = new List<SeatPlans>();

但我需要的是一个列表数组,这样我就可以访问多个对象的数据,例如allUser[0]allUser[1]allUser[2]
我的控制器代码如下:
public JsonResult getdata(int seat_plane_id)
{
    int lid = seat_plane_id;
    layoutsController L = new layoutsController();
    JsonResult result = L.getlayouts(lid);

    List<layouts> L1 = (List<layouts>)result.Data;
    List<List<SeatPlans>> allUser = new List<List<SeatPlans>>();

    for (int i = 0; i < L1.Count; i++)
    {
        String lid1 = L1[i].ticket_no_start;
        lid = Int32.Parse(lid1);
        allUser[i] = db.SEATPLAN.Where(d => d.layout_id == lid).ToList();
    }

    var v = new { allUser = allUser[0], allUser1 = allUser[1] };

    return Json(v, JsonRequestBehavior.AllowGet);
} 

我遇到了一个问题:

出现了System.ArgumentOutOfRangeException异常。

出现位置在:

allUser[i] = db.SEATPLAN.Where(d => d.layout_id == lid).ToList();

您仍然可以通过索引访问列表项,使用 allUser[0]。因此,获取 Id 将是 allUser[0].Id - Tah
allUser[0] 包含 Id 的值,但实际上我需要在 allUser[0]、allUser[1] 和 allUser[2] 中分别有一个班级列表。 - rakshith
1
是的,您可以通过这种方式访问所有公共属性。 - Tah
2
我需要类似这样的东西 --- allUser [0] = db.SEATPLAN.Where(d => d.layout_id == lid).ToList(); allUser [1] = db.SEATPLAN.Where(d => d.layout_id == lid).ToList(); - rakshith
将类的名称更改为SeatPlan。这可能会使代码更易读。(我甚至对SeatPlan这个名字表示怀疑) - Emond
显示剩余2条评论
3个回答

2
要创建一个列表数组,你可以简单地声明它:
List<SeatPlans>[] allUsers = new List<SetPlans>[size];

然后,您可以通过索引获取特定的列表:
allUsers[1] = new List<SetPlans>();

获取特定列表的特定元素:

SeatPlans specificSeatPlans = allUsers[1][2];

1
你也可以使用List来访问allUser[0]、allUser[1]、allUser[2]。allUser[0]获取第一个SeatPlan对象,然后你可以从中访问公共成员。
SeatPlan sp = allUser[0];
Console.Writeline(sp.Id);

将打印出第一个SeatPlan对象的Id。

如果我使用 allUser[0] 而不是 allUser,它会显示错误(红色标记)。 - rakshith
@rakshi, 你可以发布一下你正在尝试使用的代码吗? - Amit Hasan
2
先生,我已经发布了我的控制器。 - rakshith

1
如果您需要一个对象的二维数组,可以按照以下方式创建它:
List<List<SeatPlan>> allUser = new List<List<SeatPlan>>();

allUser.Add(db.SEATPLAN.Where(d => d.layout_id == lid).ToList());

注意,您需要使用Add方法将新对象推送到列表中。
然后可以通过allUser[0][0]访问单个对象,例如获取Id的方法是allUser[0][0].Id

1
我从以下位置收到 System.ArgumentOutOfRangeException 错误 --- allUser[0] = db.SEATPLAN.Where(d => d.layout_id == lid).ToList(); - rakshith
1
你不能以那种方式初始化一个列表。构造函数创建了一个大小为0的列表,所以allUser[0]还不存在。你必须使用Add方法,就像我回答中的那样。 - Tah

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