2011-06-15 106 views
3

我有以下平面数据结构。将平面数据结构转换为层次结构使用c#对象#

ParentAttributeId AttributeId List 
----------------- ----------- ------ 
NULL    29   TestcaseCollection 
29    30    EnclosureLeakageDielectricStrengthTest 
30    31     DeviceID 
30    32     ScannerOneLowChannel 
30    33     ScannerTwoLowChannel 
29    34    EnclosureLeakageLeakageCurrentTest 
34    35     DeviceID 
34    36     ScannerOneLowChannel 
34    37     ScannerTwoLowChannel 
29    38    PatientCircuitLeakageTest 
38    39     DeviceID 
38    40     ScannerOneLowChannel 
38    41     ScannerTwoLowChannel 
29    42    SIPSOPDielectricStrengthTest 
42    44     ScannerOneHighChannel 
42    45     ScannerOneLowChannel 
42    46     ScannerTwoHighChannel 
42    47     ScannerTwoLowChannel 
29    48    SIPSOPLeakageCurrentTest 
48    49     ScannerOneHighChannel 
48    50     ScannerOneLowChannel 
48    51     ScannerTwoHighChannel 
48    52     ScannerTwoLowChannel 

我需要将上面的平面数据结构转换为像下面这样的层次结构的对象结构。所以我的对象看起来像上面的“列表”列。我正在使用SQL存储过程来获取上述数据。我正在使用C#。

对象层次

29 
    | 
    30 
    | 31 
    | 32 
    | 33 
    | 
    34 
    | 35 
    | 36 
    |37 
    38 

任何帮助将不胜感激。

问候 二重

回答

0

你有没有看AutoMapper

不知道这是你需要什么,但这是我用来经常从一种格式转换为对象模型。

另一种选择可能是使用LINQ查询您拥有的数据并为您创建模型。

我想你可以说这样的话,这是未经测试的;

从DataList的选择选择新{....

,其中新会要创建新的对象。

但是,我认为也许仍然是这样的方式,通过您的列表迭代的强力方法。

编辑

this might help

+0

嗨griegs我有,但我无法得到这个结构的AutoMapper工作。 – niju 2011-06-15 04:39:39

+0

啊,maye LINQ?如果不让我知道,我会删除我的答案 – griegs 2011-06-15 04:40:44

+0

我可以使用EF4和AutoMapper来获取结构,但EF4生成的SQL非常大且低效。 – niju 2011-06-15 04:43:53