Итерация по списку классов - PullRequest
1 голос
/ 16 апреля 2020

Я составил список «Команды» из текстового файла. Я просто не могу перебрать его

using(StreamReader sr = new StreamReader("TXT1.txt"))
{
    using(JsonReader jr = new JsonTextReader(sr))
    {
        JsonSerializer js = new JsonSerializer();
        List<Teams> leagueTeams = js.Deserialize<List<Teams>>(jr);
    }
}

Вот где список составлен. Я попытался сделать foreach l oop здесь:

foreach (var item in LeagueTeams)
{

}

Но есть ошибка с LeagueTeams в foreach, говорящая

это не в этом контексте не существует.

Весь код:

class Teams
{
    public string name;
    public int GoalDiff;
    public int POints;
}
class Program
{
    static void Main(string[] args)
    {
        using(StreamReader sr = new StreamReader("TXT1.txt"))
        {
            using(JsonReader jr = new JsonTextReader(sr))
            {
                JsonSerializer js = new JsonSerializer();
                List<Teams> leagueTeams = js.Deserialize<List<Teams>>(jr);
            }
        }

        foreach (var item in LeagueTeams)
        {

        }
    }
}

Ответы [ 2 ]

4 голосов
/ 16 апреля 2020

Вы пытаетесь получить доступ к leagueTeams вне области его объявления, поэтому вы получаете эту ошибку. Так что вам нужно переместить объявление List<Teams> leagueTeams перед вашим using оператором:

List<Teams> leagueTeams = new List<Teams>();
using(StreamReader sr = new StreamReader("TXT1.txt"))
{
   ....
   ....
   leagueTeams = js.Deserialize<List<Teams>>(jr);

Также вам нужно исправить имя переменной в вашем foreach l oop. Исходя из того, что вы объявили, LeagueTeams является неправильным и должно быть leagueTeams:

foreach (var item in leagueTeams)
1 голос
/ 16 апреля 2020

Вы пытаетесь перебрать класс LeagueTeams, вероятно, вы, вероятно, хотите перебрать список, который вы только что создали, путем десериализации (анализа) вашего файла.

class Program
{
    static void Main(string[] args)
    {
        List<Teams> leagueTeams = new List<Teams>();
        using(StreamReader sr = new StreamReader("TXT1.txt"))
        {
            using(JsonReader jr = new JsonTextReader(sr))
            {
                JsonSerializer js = new JsonSerializer();
                leagueTeams = js.Deserialize<List<Teams>>(jr);
            }
        }

        foreach (var team in leagueTeams)
        {
            // access each team by 'team' variable
        }

        // another way using LINQ
        leagueTeams.ForEach(team => 
        {
            // access each team by 'team' variable
        });
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...