class demo:
class item
{
public string name { get; set; }
public int level { get; set; }
}
data demo:
List<item> all = new List<item>();
all.Add(new item { name = "Red", level = 0 });
all.Add(new item { name = "Blue", level = 0 });
all.Add(new item { name = "S", level = 1 });
all.Add(new item { name = "M", level = 1 });
all.Add(new item { name = "L", level = 1 });
all.Add(new item { name = "Man", level = 2 });
all.Add(new item { name = "Woman", level = 2 });
I need group by level and combine all name , This is Cartesian Product question. The result like this:
Red - S - Man
Red - S - Woman
Red - M - Man
Red - M - Woman
Red - L - Man
Red - L - Woman
Blue - S - Man
Blue - S - Woman
Blue - M - Man
Blue - M - Woman
Blue - L - Man
Blue - L - Woman
If the level was fixed, solution with bellow code :
foreach(var _0 in all.Where(m => m.level == 0))
{
foreach(var _1 in all.Where(m => m.level == 1))
{
foreach(var _2 in all.Where(m => m.level == 2))
{
Console.WriteLine(_0.name + "-" + _1.name + "-" + _2.name);
}
}
}
But the big question : level is dynamic , I just coding like this :
for(int i = 0; i < level; i++)
{
//some code ...
}
Because my real project is Javascript , so please give me simple code (non linq), Thanks very much to help .