Как создать список списков в C#

Я пытаюсь создать список списков, где большой список представляет собой бумагу, содержащую коллекцию небольшого списка, представляющего вопрос, список вопросов состоит из строки вопроса и его идентификатора. вот мой код:

public class Genes
{
    public string question { get; set; }
    public int CLO { get; set; }

} 

   List<Genes> questiongene = new List<Genes>();
   List<List<questiongene>> paper = new List<List<questiongene>>();

теперь я составляю список вопросов без ошибок, но когда я пытаюсь создать более крупный список, Visual Studio не может распознать переменный тип вопроса как тип, где не так?

Список <List <Genes>> бумаги ...

Johnny 13.03.2018 10:49

Как насчет: List <List <Genes>> paper = new List <List <Genes>> () ;?

Kiwimanshare 13.03.2018 10:49

Почему вы не создаете класс QuestionPaper со свойством List<Questiongene> Questions?

Tim Schmelter 13.03.2018 10:50

Вы создаете список типа, а не список объектов, что вы пытаетесь сделать здесь

Ipsit Gaur 13.03.2018 10:50

Возможный дубликат Создание списка списков в C#

Rudresha Parameshappa 13.03.2018 10:53

Измените свою структуру так, чтобы сказать, что у вас есть классы A и B. Класс A может иметь свойство списка B, а затем вы можете иметь список A. List<A> mainList, где каждый экземпляр A имеет список B. это то, что было @TimSchmelter ссылаясь на

Seabizkit 13.03.2018 10:58
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
6
4 601
2

Ответы 2

Я бы сделал это, а не базовый List<List<Genes>>, как предлагалось, так как тогда ясно, что представляет собой каждый элемент ...

//This is your class for a single question.  A list of these will 
//make up a paper.
public class Genes
{
    public string Question{ get; set; }
    public int CLO { get; set; }
}

//This is a Paper, which contains a list of Questions.
public class Paper
{
    public List<Genes> Questions { get; set; }
}
..
..
//To use:  First create a list of papers - 
//this is a stack of papers.
List<Paper> stackOfPapers = new List<Paper>();

//now create a list of questions which we can add to a paper
List<Genes> questions = new List<Genes>();

//Now we need to create a question to add to the list of questions.
Genes newQuestion = new Genes();    
newQuestion.Question = "How many roads must a man walk down?";
newQuestion.CLO = 42;

//now add the question to the list.
questions.Add(newQuestion);

//now we need to create a paper.  This will represent one
//paper in our stack of papers.
Paper newPaper = new Paper();
//add our list of Questions to the paper.
newPaper.Questions = questions;

//and finally, add the paper to the stack of papers.
stackOfPapers.Add(newPaper);

//or alternatively, you can use the object initializer syntax to 
//do this all in one.  Note I've also added more than one paper to 
//the list of papers, and each paper has two questions contained in it:    
var newStackOfPapers = 
    new List<Paper>
    {
        new Paper
        {
            Questions = new List<Genes> {
                new Genes
                {
                    Question = "How many roads must a man walk down?",
                    CLO = 42
                },
                new Genes
                {
                    Question = "Another Question?",
                    CLO = 111
                }
            }
        },
        //add Another paper...
        new Paper
        {
            Questions = new List<Genes> {
                new Genes
                {
                    Question = "This is the first question on the second paper?",
                    CLO = 22
                },
                new Genes
                {
                    Question = "Another Question?",
                    CLO = 33
                }
            }
        },

    };

Он создает то, что он хочет. Переменная, содержащая стопку бумаг, каждая из которых содержит список вопросов.

GPW 13.03.2018 11:49

@MongZhu Теперь лучше? Я признаю, что, вероятно, предполагал слишком большую способность просто понимать код от имени OP, основываясь на его первоначальном вопросе. Теперь все должно быть намного яснее.

GPW 13.03.2018 11:57

В вашем коде нет типа questiongene, только тип Genes. Создайте список списков:

List<List<Genes>> paper = new List<List<Genes>>();

или создайте новый тип бумаги с генератором вопросов List:

public class Paper
{
    public List<Genes> questionGenes { get; set; }

    // default constructor
    public Paper()
    {
         questionGenes = new List<Genes>();
    }

    // constructor that creates a paper from a List<Genes>
    public Paper(List<Genes> questionGene)
    {
         questionGenes = questionGene;
    }

}

а затем создайте список Paper:

List<Paper> papers = new List<Paper>();
papers.Add(new Paper(questiongene));

Другие вопросы по теме