有2个表格: A - [Id],[标题] B - [Id],[Caption],[AId] - 其中[AId] - 表A的键(一对多) 假设我们在表格中有以下数据:
А:
Id | Caption
----------
1 | Format
2 | Material
3 | PrintMode
В:
Id | Caption | Aid
------------------
1 | A5 | 1
2 | A4 | 1
3 | A3 | 1
4 | Mud | 2
5 | Paper | 2
6 | Single | 3
7 | Double | 3
假设我们想要提取数据格式和内容,并将参数传递给两个实体的函数List,因为输出应该如下所示:
一些交叉数据
A5 | Mud
A5 | Paper
A4 | Mud
A4 | Paper
A3 | Mud
A3 | Paper
当我们想要提取这样的数据格式,材料和模式时,它变得更加困难。作为输出的结果传递给三个实体的函数参数List应该如下所示:
一些交叉数据
A5 | Mud | Single
A5 | Mud | Double
A5 | Paper | Single
A5 | Paper | Double
等等。表A课程不限于3个录音。这样的事情。除了[Some Cross Data]列类型字符串之外,生成的样本仍应包含一个列(例如[dict]类型List),该列将包含一个列表和2个实体B(参见。示例1)和3个实体(请参阅例2)等。
private static List<Data> ProcessData(IReadOnlyList<Property> list)
{
var z3 = list[0].PropertyValues
.SelectMany(x => list[1].PropertyValues, (a, b) => new { a, b })
.SelectMany(x => list[2].PropertyValues, (z, c) => new { z.a, z.b, c })
.SelectMany(x => list[3].PropertyValues, (y, d) => new { y.a, y.b, y.c, d });
return z3.Select(item => new Data
{
Name = $"{item.a.Name} {item.b.Name} { item.c.Name}\t{item.d.Name}",
PropertyValues = new List<PropertyValue>
{
item.a, item.b, item.c, item.d
}
}).ToList();
}
代码执行其任务,但是一旦明确它只适用于list.Count == 4 ...我们当然可以创建很多函数并调用它们,具体取决于条目的数量。列表 - 但它只是超级峰值。
帮助创建查询...