C# C foreach循环在整个json文件中仅显示2个结果

C# C foreach循环在整个json文件中仅显示2个结果,c#,json,datagridview,C#,Json,Datagridview,我需要每个玩家在JSON文件中的名字和姓氏在datagridview中填充。一切都很好,除了dgv只有两名球员。这两位玩家都在追求json的预期部分,所以我现在看到的仅有两位玩家是马库斯·斯马特和塞迪·奥斯曼 代码: JSON: 你在错误的地方使用你的foreach foreach (JObject child in obj3["gamestartinglineup"]["teamLineup"]) 在这部分代码中,循环仅由2项组成 马库斯·斯马特(Marcus Smart)和塞迪·奥

我需要每个玩家在JSON文件中的名字和姓氏在datagridview中填充。一切都很好,除了dgv只有两名球员。这两位玩家都在追求json的预期部分,所以我现在看到的仅有两位玩家是马库斯·斯马特和塞迪·奥斯曼

代码:

JSON:


你在错误的地方使用你的foreach

    foreach (JObject child in obj3["gamestartinglineup"]["teamLineup"])
在这部分代码中,循环仅由2项组成

马库斯·斯马特(Marcus Smart)和塞迪·奥斯曼(Cedi Osman)是这两款游戏的第一位玩家


更正foreach循环以修复问题

您在错误的位置使用foreach

    foreach (JObject child in obj3["gamestartinglineup"]["teamLineup"])
在这部分代码中,循环仅由2项组成

马库斯·斯马特(Marcus Smart)和塞迪·奥斯曼(Cedi Osman)是这两款游戏的第一位玩家


更正foreach循环以解决问题

您的foreach循环正在整个球队阵容中循环以进行比赛。那个阵容中只有两支球队。然后你只从每队中抢到第一名球员。相关代码行如下所示:

foreach (JObject child in obj3["gamestartinglineup"]["teamLineup"])
{
        sl.expected = child["expected"]["starter"][0]["player"]["FirstName"].ToString()  +  " " +  child["expected"]["starter"][0]["player"]["LastName"].ToString();
foreach在teamlineup的孩子中循环,只有两个孩子,两个团队。 儿童[extected][starter][0][player]名称只会为这两支球队中的每支球队提供第一名首发球员。 如果你想得到每个队的所有首发球员,你必须在第一个循环中添加第二个foreach循环,类似这样的

foreach (JObject child in obj3["gamestartinglineup"]["teamLineup"])
{
    foreach (JObject player in child["expected"]["starter"]) 
    {

您的foreach循环正在循环通过游戏阵容的团队阵容。那个阵容中只有两支球队。然后你只从每队中抢到第一名球员。相关代码行如下所示:

foreach (JObject child in obj3["gamestartinglineup"]["teamLineup"])
{
        sl.expected = child["expected"]["starter"][0]["player"]["FirstName"].ToString()  +  " " +  child["expected"]["starter"][0]["player"]["LastName"].ToString();
foreach在teamlineup的孩子中循环,只有两个孩子,两个团队。 儿童[extected][starter][0][player]名称只会为这两支球队中的每支球队提供第一名首发球员。 如果你想得到每个队的所有首发球员,你必须在第一个循环中添加第二个foreach循环,类似这样的

foreach (JObject child in obj3["gamestartinglineup"]["teamLineup"])
{
    foreach (JObject player in child["expected"]["starter"]) 
    {

您在timelineup元素上的循环不足以列出您团队中的球员。你需要一个内环

foreach (JObject child in obj3["gamestartinglineup"]["teamLineup"])
{
    foreach (JObject sub in child["expected"]["starter"])
    {
        var expected = sub["player"]["FirstName"].ToString() + " " + sub["player"]["LastName"].ToString();
        DataRow row = dt.NewRow();
        row["Projected Lineup"] = expected;
        dt.Rows.Add(row);
    }
}

另外,不要在循环中为gridview分配数据源,但只有在您完成所有内容的读取后,才可以分配数据源。您在timelineup元素上的循环不足以列出团队中的参与者。你需要一个内环

foreach (JObject child in obj3["gamestartinglineup"]["teamLineup"])
{
    foreach (JObject sub in child["expected"]["starter"])
    {
        var expected = sub["player"]["FirstName"].ToString() + " " + sub["player"]["LastName"].ToString();
        DataRow row = dt.NewRow();
        row["Projected Lineup"] = expected;
        dt.Rows.Add(row);
    }
}

也不要在循环中为gridview分配数据源,但只有当您完成所有内容时,您的循环才会循环两个团队,并且您从每个团队中选出第一个玩家。您需要在第一个循环中添加第二个循环来循环玩家。您的循环仅循环两个团队,并且您从每个团队中选择第一个玩家。您需要在第一个循环中添加第二个循环来循环玩家。