Как сгенерировать таблицу / матрицу с динамическим вложенным классом - PullRequest
0 голосов
/ 12 апреля 2019

Как создать таблицу (матрицу или другой тип списка / класса) для каждого параметра с динамическим списком тегов.Может быть (x) количество опций, и каждая опция может иметь (y) количество тегов.

класс опций

public class Option
{
    public Option()
    {
        Tags = new HashSet<Tag>();
    }

    public string Name { get; set; }
    public ICollection<Tag> Tags { get; set; }
}

класс тегов

public class Tag
{
    public string Value { get; set; }
}

Основной код

var option1 = new Option() { Name = "Option1" };
var option2 = new Option() { Name = "Option2" };

option1.Tags = new List<Tag>();
option2.Tags = new List<Tag>();

var tag1 = new Tag() { Value = "tag1" };
var tag2 = new Tag() { Value = "tag2" };
var tag3 = new Tag() { Value = "tag3" };
var tag4 = new Tag() { Value = "tag4" };
var tag5 = new Tag() { Value = "tag5" };

option1.Tags.Add(tag1);
option1.Tags.Add(tag2);
option2.Tags.Add(tag3);
option2.Tags.Add(tag4);
option2.Tags.Add(tag5);

Ожидаемый результат:

//Console Output
tag1  tag3
tag1  tag4
tag1  tag5
tag2  tag3
tag2  tag4
tag2  tag5

Код У меня естьпока что, но не совсем работает. (Использование GenFu для генерации данных)

 private static void Main(string[] args)
    {
        List<List<Tag>> TagList = new List<List<Tag>>();
        List<int> TagOrder = new List<int>();

        List<Option> Options = A.ListOf<Option>(2);
        foreach (Option option in Options)
        {
            option.Tags = A.ListOf<Tag>(2);
        }

        foreach (Option option in Options)
        {
            TagList.Add(option.Tags.ToList());
        }

        foreach (var item in TagList)
        {
            TagOrder.Add(item.Count);
        }
        int run = 0;
        int optionrun = 0;
        var runCount = TagOrder.Aggregate((x, y) => x * y);
        for (int h = 0; h < runCount + 1; h++)
        {
            try
            {
                var word = Options[optionrun].Tags.ToList()[run].Value;
                Console.WriteLine(word);
                optionrun++;
            }
            catch (Exception)
            {
                optionrun = 0;
                run++;
                Console.WriteLine("");
            }
        }

        Console.ReadLine();

        static int RandomNumber(int min, int max)
        {
            Random random = new Random(); return random.Next(min, max);
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...