无法为 GetEnumerator 执行 Foreach
Can't execute Foreach for GetEnumerator
当我声明一个 foreach 时,编译器显示以下错误:
foreach statement cannot operate on variables of type 'System.Data.DataTable' because 'System.Data.DataTable' does not contain a public definition for 'GetEnumerator
这是代码:
leagueTable_link = item.Links.LeagueTable.href.ToString();
object leagueTable_object = load_League_Table(leagueTable_link);
foreach (var classifica in leagueTable_object)
{
}
这是class在线工具Json2C#:
创建的
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Test
{
class LeagueTable
{
public string[] _links = new string[50];
public int[] position = new int[50];
public string[] teamName = new string[50];
public int[] playedGames = new int[50];
public int[] points = new int[50];
public int[] goals = new int[50];
public int[] goalsAgainst = new int[50];
public int[] goalDifference = new int[50];
public struct League_Struct
{
public string _links;
public int position;
public string teamName;
public int playedGames;
public int points;
public int goals;
public int goalsAgainst;
public int goalDifference;
}
public League_Struct[] league_struct = new League_Struct[50];
public class Links
{
public string self { get; set; }
public string soccerseason { get; set; }
}
public class Team
{
public string href { get; set; }
}
public class Links2
{
public Team team { get; set; }
}
public class Standing
{
public Links2 _links { get; set; }
public int position { get; set; }
public string teamName { get; set; }
public int playedGames { get; set; }
public int points { get; set; }
public int goals { get; set; }
public int goalsAgainst { get; set; }
public int goalDifference { get; set; }
}
public class RootObject
{
public Links _links { get; set; }
public string leagueCaption { get; set; }
public int matchday { get; set; }
public List<Standing> standing { get; set; }
}
}
}
leagueTable_object 包含这个:
var obj = JsonConvert.DeserializeObject<LeagueTable.RootObject>(responseText);
我该如何解决这个问题?我在网上看到不同的解决方案,但我不明白。我应该在 Json class 中实现 GetEnumerator class 吗?
看起来 leagueTable_object 是 DataTable.If 的一个对象,它是一个列表,然后它就可以工作了。
Foreach 可以用于继承 IEnumerable.You 的 类 可以在 foreach 中使用 leagueTable_object.Rows
而不是 leagueTable_object
。
如果您的对象是 DataTable
类型,那么这里的问题是您正在尝试迭代 DataTable
对象,而您需要迭代它的行。因此,请尝试将您的 foreach
代码更改为类似这样的内容。
foreach (var classifica in leagueTable_object.Rows)
{
}
您也可以将 leagueTable_object
直接转换为 DataTable
而不是使用 object
。这将使查看者更清楚,因为他会知道创建了哪种类型的对象。
希望对您有所帮助。
您的 leagueTable_object 对象的类型似乎是 'System.Data.DataTable',这不是可枚举类型,因此您无法循环访问该对象。
您可以做的是在此 DataTable 中的行上循环:
leagueTable_link = item.Links.LeagueTable.href.ToString();
DataTable leagueTable_object = load_League_Table(leagueTable_link);
foreach (var classifica in leagueTable_object.Rows)
{
}
当我声明一个 foreach 时,编译器显示以下错误:
foreach statement cannot operate on variables of type 'System.Data.DataTable' because 'System.Data.DataTable' does not contain a public definition for 'GetEnumerator
这是代码:
leagueTable_link = item.Links.LeagueTable.href.ToString();
object leagueTable_object = load_League_Table(leagueTable_link);
foreach (var classifica in leagueTable_object)
{
}
这是class在线工具Json2C#:
创建的using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Test
{
class LeagueTable
{
public string[] _links = new string[50];
public int[] position = new int[50];
public string[] teamName = new string[50];
public int[] playedGames = new int[50];
public int[] points = new int[50];
public int[] goals = new int[50];
public int[] goalsAgainst = new int[50];
public int[] goalDifference = new int[50];
public struct League_Struct
{
public string _links;
public int position;
public string teamName;
public int playedGames;
public int points;
public int goals;
public int goalsAgainst;
public int goalDifference;
}
public League_Struct[] league_struct = new League_Struct[50];
public class Links
{
public string self { get; set; }
public string soccerseason { get; set; }
}
public class Team
{
public string href { get; set; }
}
public class Links2
{
public Team team { get; set; }
}
public class Standing
{
public Links2 _links { get; set; }
public int position { get; set; }
public string teamName { get; set; }
public int playedGames { get; set; }
public int points { get; set; }
public int goals { get; set; }
public int goalsAgainst { get; set; }
public int goalDifference { get; set; }
}
public class RootObject
{
public Links _links { get; set; }
public string leagueCaption { get; set; }
public int matchday { get; set; }
public List<Standing> standing { get; set; }
}
}
}
leagueTable_object 包含这个:
var obj = JsonConvert.DeserializeObject<LeagueTable.RootObject>(responseText);
我该如何解决这个问题?我在网上看到不同的解决方案,但我不明白。我应该在 Json class 中实现 GetEnumerator class 吗?
看起来 leagueTable_object 是 DataTable.If 的一个对象,它是一个列表,然后它就可以工作了。
Foreach 可以用于继承 IEnumerable.You 的 类 可以在 foreach 中使用 leagueTable_object.Rows
而不是 leagueTable_object
。
如果您的对象是 DataTable
类型,那么这里的问题是您正在尝试迭代 DataTable
对象,而您需要迭代它的行。因此,请尝试将您的 foreach
代码更改为类似这样的内容。
foreach (var classifica in leagueTable_object.Rows)
{
}
您也可以将 leagueTable_object
直接转换为 DataTable
而不是使用 object
。这将使查看者更清楚,因为他会知道创建了哪种类型的对象。
希望对您有所帮助。
您的 leagueTable_object 对象的类型似乎是 'System.Data.DataTable',这不是可枚举类型,因此您无法循环访问该对象。 您可以做的是在此 DataTable 中的行上循环:
leagueTable_link = item.Links.LeagueTable.href.ToString();
DataTable leagueTable_object = load_League_Table(leagueTable_link);
foreach (var classifica in leagueTable_object.Rows)
{
}