如何为每个带有动态标签列表的选项生成表格(矩阵或其他类型的列表/类)。 可以有(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);
}
}