Добавление более одного списка классов в один список классов - PullRequest
0 голосов
/ 14 мая 2019

Мне нужно объединить несколько списков в список. Этот вопрос кажется распространенным, но моя проблема может быть совершенно другой. потому что у меня есть 3 класса. Я создал 3 списка на основе этих классов

List<QTM> lstQTM = new List<QTM>();
List<QTMMain> lstQTMmain = new List<QTMMain>();
List<QTMStats> lstQTMStats = new List<QTMStats>();

эти классы указывают только атрибут, который сохраняется в этих списках. Я создал еще один список

 List<QTMList> lstQTMlist = new List<QTMList>();

этот QTMList также класс. этот класс

public class QTMList{
        public List<QTM> QTM { get; set; }
        public List<QTMStats> QTMStats { get; set; }
        public List<QTMMain> QTMMain { get; set; }
}

Теперь я попытался добавить lstQTM, lstQTMmain и lstQTMStats в список lstQTMlist. поэтому я использовал

qtmList = new QTMList();
qtmList.QTMMain(lstQTMmain);
qtmList.QTM(lstQTM);
qtmList.QTMStats(lstQTMStats);

lstQTMlist.Add(qtmList);

Я получил ошибки

C # Невыбираемый член 'lstQTMlist.lstQTMmain' не может использоваться как Метод

и т. Д.

Не могли бы вы дать кому-нибудь подсказку, чтобы решить мою проблему?

Ответы [ 4 ]

4 голосов
/ 14 мая 2019

Вы должны использовать для настроек.

qtmList = new QTMList();
qtmList.QTMMain=lstQTMmain;
qtmList.QTM=lstQTM;
qtmList.QTMStats=lstQTMStats;
1 голос
/ 14 мая 2019

Вы не можете вызывать свойство, такое как метод, сообщение совершенно ясное.

qtmList = new QTMList();

Вы не можете сделать это, например: qtmList.QTMMain(lstQTMmain);

Вы можете добавить 1stQtMain к QTMMain следующим образом:

qtmList.QTMMain.AddRange(lstQTMmain)

Вы используете AddRange для добавления списка объектов в список.

0 голосов
/ 14 мая 2019

Ошибка вызвана тем, как вы используете поля вашего QTMList класса. Ты используешь они как методы, то есть передача аргументов в скобках. Вот как вы называете метод. Чтобы присвоить значение полю или свойству класса, вы просто используете оператор =. Таким образом, ваш код может быть упрощен до:

qtmList = new QTMList();
qtmList.QTMMain = new List<QTMMain>();
qtmList.QTM = new List<QTM>();
qtmList.QTMStats = new List<QTMStats>();

или вы можете инициализировать списки при QTMList инициализации:

public class QTMList{
    public List<QTM> QTM { get; set; } = new List<QTM>();
    public List<QTMStats> QTMStats { get; set; } = new List<QTMStats>();
    public List<QTMMain> QTMMain { get; set; } = new List<QTMMain>();
}
0 голосов
/ 14 мая 2019

Вы можете попробовать это:

qtmList = new QTMList();
qtmList.QTMMain = new List<QTMStats>(lstQTMmain);
qtmList.QTM = new List<QTM>(lstQTM);
qtmList.QTMStats = new List<QTMMain>(lstQTMStats);

Таким образом, новые списки (QTMMain, ...) содержат копию элементов назначенных списков (lstQTMmain, ...). Вы можете упростить свой код, добавив следующий конструктор в QTMList:

public QTMList(List<QTM> qtm, List<QTMStats> qtmstats, qtmmain)
{
    QTMMain = new List<QTMStats>(lstQTMmain);
    QTM = new List<QTM>(lstQTM);
    QTMStats = new List<QTMMain>(lstQTMStats);
}

Если вам не нужна копия содержимого списка, вы должны назначить списки свойствам.

qtmList = new QTMList();
qtmList.QTMMain = lstQTMmain;
qtmList.QTM = lstQTM;
qtmList.QTMStats = lstQTMStats;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...