【发布时间】:2016-03-28 20:01:07
【问题描述】:
我正在从 SQL Server 获取一些平面格式的分层数据。这就是数据的样子。
Group Name Level Parent Value1 Value2 RowID
Global Product1 1 10 20 1
APAC Product1 1 80 90 2
EMEA Product1 1 50 70 3
Global Product2 2 Product1 100 200 4
APAC Product2 2 Product1 800 900 5
EMEA Product2 2 Product1 500 700 6
Global Product3 3 Product2 10 20 7
APAC Product3 3 Product2 80 90 8
Global Product4 4 Product3 110 120 9
APAC Product4 4 Product3 810 190 10
EMEA Product4 4 Product3 510 170 11
.....
.....
Global Product12 1 10 20 100
我需要根据Name and Level 列对数据进行分组。然后我需要根据Group Column & Value1 & Value2 columns 的组合创建多个键。请参阅下面的JSON 输出以了解有关输出的更多信息。请记住组的数量可以更改。
[
{
Id: 1,
Name: Product1,
parentId: null,
GlobalValue1: 10,
GlobalValue2: 20,
APACValue1: 80,
APACValue2: 90,
EMEAValue1: 50,
EMEAValue2: 70
},
{
Id: 2,
Name: Product2,
parentId: 1,
GlobalValue1: 100,
GlobalValue2: 200,
APACValue1: 800,
APACValue2: 900,
EMEAValue1: 500,
EMEAValue2: 700
},
{
Id: 3,
Name: Product3,
parentId: 2,
GlobalValue1: 10,
GlobalValue2: 20,
APACValue1: 80,
APACValue2: 90,
EMEAValue1: null,
EMEAValue2: null
},
{
Id: 4,
Name: Product4,
parentId: 3,
GlobalValue1: 110,
GlobalValue2: 120,
APACValue1: 810,
APACValue2: 190,
EMEAValue1: 510,
EMEAValue2: 170
}{
Id: 122,
Name: Product12,
parentId: null3,
GlobalValue1: 10,
GlobalValue2: 20,
APACValue1: null,
APACValue2: null,
EMEAValue1: null,
EMEAValue2: null
}
]
我需要自动生成 ID 字段。该字段将用于建立父子关系。 I cannot rely onnamecolumn as it can repeat (can have same value) across different levels.。将有超过 1 个产品和每个级别。在我的示例中,我只是为每个级别展示一个产品,以保持示例简单。
【问题讨论】:
-
听起来你想从你的表中创建一个字典然后序列化它。例如,请参阅this。
-
@MattBurland:感谢您的快速回复。如果我错了,请纠正我。但这只是车轮上的一个齿轮。它告诉我如何序列化数据。但在我这样做之前,我需要弄清楚如何生成密钥和管理父子关系。如何对数据进行分组?如何管理空值。我有一些想法,但有太多动人的部分,我有点困惑。
-
您的问题并不完全清楚这些关系应该如何运作,但我认为您希望按
Level分组(看起来像Level和Name基本上是一对一的),然后对于每个组中的每个项目,创建一个字典并连接Group和列名(Value1,Value2)以制作字典键并粘贴相关值。然后将字典放入数组中并序列化整个内容。目前尚不清楚输出中的Id来自何处。那只是Level吗? -
只需从您的输入中创建一个数组(linq 将是最好的方法),然后对其进行序列化。
-
@MattBurland:我不确定您所说的
level and name are basically 1to1是什么意思。我正在按名称和级别列对数据进行分组。由于名称字段可以跨级别重复,我不能依靠它来展示父子关系,这就是我想要创建的 ID 字段。