我正在从事一个项目,在这个项目中,我需要能够将复杂的父级子结构转换为其子父级结构,这是必要的,因为查询和报告数据需要能够从父级或子级pov中进行。这可能没有多大意义,但下面是一个带有一些示例数据的简化版本:
假设我有这样的数据:
底色(红色,蓝色,绿色)重音颜色(红色,黄色,蓝色)
我想把它转换成:
红色(底色,重音色)蓝色(底色,重音色)绿色(底色)黄色(重音色)
这似乎是理想的林克,但我想不出它,我知道我可以做很长的手,但似乎笨重。
到目前为止,我有一个测试类要对付:
class UsageType
{
public string Usage { get; set; }
public List<Colour> Colours = new List<Colour>();
}
class Colour
{
public string Name { get; set; }
}
public class TestClass
{
public TestClass()
{
var usageTypes = new List<UsageType>()
{
new UsageType()
{
Usage = "base colours",
Colours = new List<Colour>()
{
new Colour() { Name = "Red"},
new Colour() { Name = "Blue"},
new Colour() { Name = "Green"}
}
},
new UsageType()
{
Usage = "accent colours",
Colours = new List<Colour>()
{
new Colour() { Name = "Red"},
new Colour() { Name = "Blue"},
new Colour() { Name = "Yellow"}
}
}
};
var allColours = from clr in usageTypes
.SelectMany(ut => ut.Colours, (clr, ut) => new { colour = ut.Name, usage = clr.Usage })
select new { clr.colour, clr.usage };
}
}我想知道的是,如何从我的颜色列表(我的样本中的allColours变量)中获得根据我的问题构造它的方法。任何帮助最好的方式来做这将不胜感激。
发布于 2016-10-03 12:23:17
GroupBy颜色基本上会给您提供所需的格式:
var colourUsage =
from ut in usageTypes
from c in ut.Colours
group ut.Usage by c.Name into g
select new { colour = g.Key, usages = g.ToList() };https://stackoverflow.com/questions/39831160
复制相似问题